我遇到了一个很奇怪的画图问题。我想创建PDF,为此,我使用了android原生PDF API,它给了我画布。过了一会儿,我注意到在同一个地方画几次直线或矩形比画过一次的更饱和。下面是我的测试代码:
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(0.5f);
paint.setARGB(255,0,0,0);
for(int i = 0;i < 1000;i++)
canvas.drawLine(0, 10, PageRectangle.A4.getPointX(), 10, paint);
canvas.drawLine(0, 20, PageRectangle.A4.getPointX(), 20, paint);
以下是结果
有没有办法去除这种饱和呢?
这是由于可伸缩的浮点几何学。一条线将穿过像素的一部分,因此对这样的像素会有一些透明度。
对于带有红线的半个像素:50%红色,下一次75%红色,以此类推。
也许你可以通过Graphics2D暗示(转移到像素边框)来减少效果,但它永远不会完全丢失。(设置StrokeWidth(0.5F)
)