2

最近在学习skia库(google开源2d引擎,可用于Android和chromium等),现在我想在windows上使用它而不是GDI+不支持带抗锯齿的剪辑区域,在这个过程中,我发现了一个问题关于像素。

up 设置抗锯齿,down 不设置抗锯齿

主要代码是:

paint.setStrokeWidth(1);
paint.setStyle(SkPaint::kStroke_Style);
paint.setAntiAlias(true);
canvas.drawRect(skrect,paint);  //draw up rect

skrect.fTop += 110;
skrect.fBottom += 110;

paint.setAntiAlias(false);
canvas.drawRect(skrect, paint); //draw down rect

如你所见,同样的矩形,如果我没有设置 Antialias,边界像素为 1(我设置冲击宽度为 1),但如果我设置 Antialias,边界像素为 2,它变得有点亮,虽然我设置颜色是黑色。

不知道为什么,谁能告诉我?

谢谢,

4

1 回答 1

0

现在,也许我知道了。

skia库的canvas应该和Html5的canvas一样,canvas的每一行都有一条无限细的“线”,线的宽度从中心线到拉伸,所以如果我们画一条1px的线,其实会填满两条0.5 像素点,但显示设备不允许这样做,因此它将填充 2 个像素点,并将其设置为更亮的颜色以区分真实的 2 个像素。

我会搜索更多的材料来证明这一点。

于 2017-03-02T05:28:06.480 回答