旋转画布后,位图会失去其质量

时间:2017-05-30 13:02:50

标签: android canvas view bitmap draw

我的自定义视图(指南针)中有很多绘制操作。我决定通过在onSizeChanged()方法中在位图上绘制整个罗盘来优化它,而不是每次onDraw()触发时直接绘制它。

以下是onDraw()方法的一部分:

canvas.rotate(-heading, x, y);
canvas.drawBitmap(compassBitmap, 0f, compassBitmapY, compassBitmapPaint);

我的问题是轮换后会发生什么。位图失去了它的质量。 设置ANTI_ALIAS_FLAG根本没有帮助。有没有办法解决这个问题,还是应该回到“更重”的实施?

1 个答案:

答案 0 :(得分:0)

在不失去质量的情况下旋转图像是不可能的,它受到分辨率的限制。

需要重新计算每个像素位置,如果新目标不是(int,int),则需要将像素混合为最接近原始图像。

enter image description here enter image description here

http://homepages.inf.ed.ac.uk/rbf/HIPR2/rotate.htm