两次绘制相同的矩形看起来会有所不同

时间:2016-01-02 13:00:06

标签: android android-graphics

我有一个自定义视图,我意识到有些线条看起来比其他线条更暗。经过一番调查,我发现这不是一种感觉,而是现实。绘制它们的代码是相同的,但它被多次调用。如果在线条为浅灰色时调用它。如果我再次调用它,那么线条将是深灰色。为什么? (使用Android 5.1的nexus 4)

bgPaint = new Paint();
bgPaint.setAntiAlias(true);
bgPaint.setStyle(Paint.Style.FILL);
bgPaint.setColor(Color.LTGRAY);

borderPaint = new Paint();
borderPaint.setAntiAlias(true);
borderPaint.setStyle(Paint.Style.STROKE);
borderPaint.setColor(Color.DKGRAY);

canvas.drawRoundRect(new RectF(tile.getX() + 1, tile.getY() + 1, tile.getXx() - 1, tile.getYy() - 1),
        roundRadius, roundRadius, borderPaint);
canvas.drawRoundRect(new RectF(tile.getX() + 1, tile.getY() + 1, tile.getXx() - 1, tile.getYy() - 1),
        roundRadius, roundRadius, bgPaint);

这是一个例子。右下方的瓷砖颜色较深。

example

更新:第一个drawRoundRect负责。我评论了第二个,没有它我可以重现这种行为。但说实话 - 第二个电话会正确呈现 - 深灰色。但为什么第一次通话会让它变轻?

1 个答案:

答案 0 :(得分:1)

由于.setAntiAlias(true);,形状的边缘与已经存在的颜色混合在一起。

因此,与第一遍相同,不是将DKGRAY与白色混合,而是将DKGRAYDKGRAY混合并使外观更暗。