1
我創建了一個帶背景旋轉的旋轉圖像視圖,但結果是「別名」。背景上的旋轉圖像的抗鋸齒?
通常的方法是創建一個Paint
具有反別名標誌,然後用它來繪製位圖。 但是,背景是通過視圖的draw(Canvas canvas)
方法繪製的,所以我無法使用canvas.drawBitmap
方法繪製。
這裏我的代碼以旋轉的ImageView包括背景:
@Override
public void draw(Canvas canvas)
{
canvas.save();
canvas.rotate(mAngle%360, canvas.getClipBounds().exactCenterX(), canvas.getClipBounds().exactCenterY());
canvas.scale(scaleWidth, scaleHeight, canvas.getClipBounds().exactCenterX(), canvas.getClipBounds().exactCenterY());
super.draw(canvas);
canvas.restore();
}
和我的onMeasure方法相適應的高度,並根據該角度的
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int w = getDrawable().getIntrinsicWidth();
int h = getDrawable().getIntrinsicHeight();
double a = Math.toRadians(mAngle);
int width = (int) (Math.abs(w * Math.cos(a)) + Math.abs(h * Math.sin(a)));
int height = (int) (Math.abs(w * Math.sin(a)) + Math.abs(h * Math.cos(a)));
scaleWidth = (width != 0) ? ((float) w)/width : 1;
scaleHeight = (height != 0) ? ((float) h)/height : 1;
setMeasuredDimension(width, height);
}
所以寬度,我如何「在這個旋轉上啓用「anti aliasing?
見http://stackoverflow.com/questions/14378573/bitmap-not-drawn-anti-aliased/14443954#14443954 – yoah 2013-02-26 20:06:44
我已經看到了這個問題,但我的旋轉也關注背景,並且背景由view.draw()方法繪製。所以我不能使用這個解決方案 – Goo 2013-02-26 20:25:23