setAlias()是否需定义背景?paint.setAlias(true)对圆形无效原因咨询
问题解答
1. setAlias() 是否需要预先定义背景?
首先纠正:Android绘图体系中不存在setAlias()方法,你应该是指Paint.setAntiAlias(boolean)(抗锯齿设置)。这个方法不需要预先定义画布背景,它的作用是通过对图形边缘像素做混合处理,优化边缘平滑度,和画布背景的设置完全独立,两者没有依赖关系。
2. 调用paint.setAlias(true) 对绘制的圆形没有效果,是否是因为未显式为画布背景指定颜色?
和画布背景颜色无关,没效果的常见原因如下:
- 方法名错误:正确的抗锯齿方法是
paint.setAntiAlias(true),少写Anti的话该方法不存在,自然不会生效。 - 视觉差异不明显:抗锯齿效果在低分辨率屏幕、小尺寸圆形或边缘简单的图形上,肉眼很难分辨出差异。
- Paint设置被覆盖:如果在调用
setAntiAlias(true)之后,又重新创建了Paint对象或重置了Paint参数,之前的抗锯齿设置会失效。 - 其他Paint参数影响:比如设置了
paint.setStyle(Paint.Style.STROKE)且线条过粗,抗锯齿的边缘优化效果会被掩盖。
内容的提问来源于stack exchange,提问作者Matt Foster
相关产品推荐
相关产品推荐

