用平滑的边缘画一个圆形

9

我正在应用程序中使用canvas,并需要绘制一个圆形。
为此,我使用了canvas类的drawCicle(cx,cy,radious,paint)方法。
问题是圆的边缘呈现出像素化的外观。并且它有点椭圆形。

这是我的代码:

public void drawCircle(){       
    Paint paint = new Paint();
    paint.setColor(Color.rgb(52, 73, 94));
    canvas.drawCircle(200, 300, 33, paint);     
}

enter image description here

1个回答

31

使用paint.setFlags(Paint.ANTI_ALIAS_FLAG)

这将启用反走样 => 边缘变得更加平滑


它更加流畅,但仍然有点像素化。而且它是椭圆形的。 - Roland
阅读如何执行抗锯齿,您将理解为什么它是像素化的。无法帮助椭圆形,信息不足。 - Sam
2
另外,paint.setAntiAlias(true); - Eric Cochran
抱歉,我知道有点晚了。但是如果你在位图上绘制,即使启用了反锯齿,问题仍然存在,因为重绘时未清除位图。我在这里更详细地介绍了这个问题(链接:https://medium.com/@ali.muzaffar/android-why-your-canvas-shapes-arent-smooth-aa2a3f450eb5)。 - Ali
唯一的原因是在绘制之前转换画布,这个形状才会是椭圆形。一个好的做法是先保存画布,应用画布变换,绘制变换后的内容,然后恢复画布,以便下一步操作有一个干净的画布。 - Mihai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接