順利縮放位圖這是我在我的Android應用程序上Canvas
畫Bitmap
:在畫布上繪製
canvas.save();
canvas.scale(scale, scale, x, y);
canvas.drawBitmap(bitmap, x, y, null);
canvas.restore();
然而Bitmap
不順利縮放,不執行抗鋸齒。我如何啓用抗鋸齒?
順利縮放位圖這是我在我的Android應用程序上Canvas
畫Bitmap
:在畫布上繪製
canvas.save();
canvas.scale(scale, scale, x, y);
canvas.drawBitmap(bitmap, x, y, null);
canvas.restore();
然而Bitmap
不順利縮放,不執行抗鋸齒。我如何啓用抗鋸齒?
試試這個:
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
paint.setDither(true);
canvas.drawBitmap(bitmap, x, y, paint);
您是否嘗試過創建Paint
對象,調用setAntiAlias(true)
並將它作爲第四個參數傳遞給drawBitmap
方法?如果這不起作用,我想你應該縮減drawBitmap
的調用,而不是縮放畫布,例如通過使用drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)
。
兩個Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
或paint.setFilterBitmap(true);
爲我工作,但要非常小心,我的比賽就砍下了FPS從30FPS
只17FPS
。因此,如果它是像遊戲一樣的任務關鍵繪圖,那麼您最好在加載時縮放圖像。我照做了以下方式:
public Bitmap getImage (int id, int width, int height) {
Bitmap bmp = BitmapFactory.decodeResource(getResources(), id);
Bitmap img = Bitmap.createScaledBitmap(bmp, width, height, true);
bmp.recycle();
return img;
}
用途:
canvas.drawBitmap(source, 0, 0, new Paint(Paint.ANTI_ALIAS_FLAG));
剛一說明。如果你只需要一個平方的結果,無論你需要放大或縮小,使用這個令人難以置信的方便的技巧... stackoverflow.com/a/17733530/294884希望它可以幫助別人 – Fattie 2014-06-02 13:43:45