我有一个canvas.drawLines()
和一个Paint
的抗锯齿设置。如果我将其关闭,效果就会消失
发生了什么:出于某种原因,如果屏幕上显示toDraw
的最后一个点,则会绘制线条,如左侧屏幕截图所示。如果它被拖到屏幕外面,那么线条就会如右图所示那样画出来 - 这应该是怎么回事
在调试器中检查toDraw
- 最后一个点有有效坐标
绘制属性设置:
paint.setColor(0xFF000000);
paint.setStrokeWidth(1.2f);
paint.setAntiAlias(true);
绘图代码:
canvas.translate(dx, dy); //dx and dy are the only things different for the screenshots
float[] toDraw = ...;
canvas.drawLines (toDraw, paint);
为什么会发生这种情况?
答案 0 :(得分:0)
好吧,看起来抗锯齿设置受小对象的影响很大:数组中的最后两个点非常接近 - dx,dy~1E-4
可能的解决方案(在Android 4.0.4上查看):
- 删除其中一个关闭点
- 致电myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
,其中myView是包含您的画布的视图
- 禁用抗锯齿