【问题标题】:Drawing rotated bitmap with anti alias使用抗锯齿绘制旋转位图
【发布时间】:2012-01-19 13:15:45
【问题描述】:
我尝试在启用抗锯齿的情况下绘制旋转位图,但它仍然有别名并且不平滑,有什么帮助吗?
我做了如下:
final Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setAntiAlias(true);
canvas.rotate(-mValues[0]);
canvas.drawBitmap(compass, -compass.getWidth()/2,-compass.getHeight()/2,p);
【问题讨论】:
标签:
android
paint
antialiasing
【解决方案1】:
Paint.setAntiAlias() 用于文本。
你想要p.setFilterBitmap(true);。
【解决方案2】:
如果您在没有画布的情况下旋转(使用createBitmap),请将过滤器设置为true。
例子:
private static Bitmap rotateBitmap(Bitmap srcImage, float angle) {
Matrix matrix = new Matrix();
matrix.postRotate(angle);
Bitmap rotated = Bitmap.createBitmap(srcImage, 0, 0, srcImage.getWidth(), srcImage.getHeight(), matrix, true/*set true for anti-alias*/);
srcImage.recycle(); // discard original image
return rotated;
}