提问者:小点点

在画布上同一位置多次画线,使画布更加饱和


我遇到了一个很奇怪的画图问题。我想创建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);

以下是结果

有没有办法去除这种饱和呢?


共1个答案

匿名用户

这是由于可伸缩的浮点几何学。一条线将穿过像素的一部分,因此对这样的像素会有一些透明度。

对于带有红线的半个像素:50%红色,下一次75%红色,以此类推。

也许你可以通过Graphics2D暗示(转移到像素边框)来减少效果,但它永远不会完全丢失。(设置StrokeWidth(0.5F))