关于skia antialias

Posted

技术标签:

【中文标题】关于skia antialias【英文标题】:About skia antialias 【发布时间】:2017-02-26 07:11:28 【问题描述】:

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

up is set antialias,down is not set antialias

主要代码是:

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(我设置sock width为1),但如果我设置Antialias,边界像素为2,它变得有点亮,虽然我设置的颜色是黑色。

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

谢谢,

【问题讨论】:

【参考方案1】:

现在,也许我知道了。

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

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

【讨论】:

以上是关于关于skia antialias的主要内容,如果未能解决你的问题,请参考以下文章

关于opengl的绑定和解绑的时机

关于opengl和 osg的问题

openCV 相当于 PIL 调整大小 ANTIALIAS?

opengl关于glut, freeglut, glfw, glew, glad, gl3w库的说明

大海捞针 Skia(C++):Skia 环境搭建

为啥窗户上的skia效率低下