2010-09-24 92 views
6

如我們所知,我們可以通過2種方式旋轉位圖。使用Canvas.rotate旋轉位圖的問題

的第一個方法是:

Matrix mt = new Matrix(); 
mt.postRotate(degree); 
Bitmap bitmap = CreateBitmap(src, 0, 0, w, h, mt, true); 
canvs.drawBitmap(bitmap, 0, 0, paint); 

通過這種方式,我們總是需要爲每個旋轉創建新的位圖,它不是爲高性能遊戲或應用程序的好方法。

的第二個方法是:

canvas.save(); 
canvas.rotate(degree); 
canvas.drawBitmap(bitmap, 0, 0, paint); 
canvas.restore(); 

這樣,我們避免頻繁創建新的位圖,但旋轉位圖是失真,位圖質量比第一種方式更糟糕。

那麼,有沒有第三種方式來高性能和高質量旋轉位圖?

您的任何意見都非常感謝!

回答

0

如果你真的想要高速圖形應用程序(甚至2D),你應該使用Android上的OpenGL。

我相信副本島使用OpenGL和VBO的(如果有的話),用於渲染它的2D場景。但我找不到參考。

+0

非常感謝!我之前已經考慮過GL,但我不想使用它,因爲我的應用程序不僅僅是一個應用程序。 – user457210 2010-09-24 13:58:38

2

確保您提供Paintcanvas.drawBitmap(bitmap, 0, 0, paint)

而且不要忘了使用抗混疊和位圖過濾:

paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);