众所周知,我们可以通过两种方式旋转位图。
第一种方式是:
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 :(得分:2)
确保您向Paint
提供canvas.drawBitmap(bitmap, 0, 0, paint)
。
不要忘记使用反别名和位图过滤:
paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
答案 1 :(得分:0)
如果你真的想要高速图形应用程序(甚至2D),你应该在Android上使用OpenGL。
我相信Replica Island使用OpenGL和VBO(如果可用)来渲染它的2D场景。但我找不到参考。
答案 2 :(得分:0)