有关使用Canvas.rotate旋转位图的问题

use*_*210 6 android

我们知道,我们可以通过2种方式旋转位图.

第一种方式是:

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

通过这种方式,我们总是需要为每次旋转创建新的位图,这对于高性能游戏或应用程序来说并不好.

第二种方式是:

canvas.save(); 
canvas.rotate(degree); 
canvas.drawBitmap(bitmap, 0, 0, paint); 
canvas.restore(); 
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我们避免频繁创建新的位图,但旋转位图是失真,位图质量比第一种方式差.

那么,有没有第三种方法来旋转高性能和高质量的位图?

您的任何评论都非常感谢!

MrS*_*ake 0

如果您确实想要高速图形应用程序(甚至是 2D),您应该在 Android 上使用 OpenGL。

我相信 Replica Island 使用 OpenGL 和 VBO(如果可用)来渲染它的 2D 场景。但我找不到参考。