2010-09-24 12 views
6

Como sabemos, podemos rotar un mapa de bits de 2 maneras.Pregunta sobre rotar mapa de bits con Canvas.rotate

La primera manera es:

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

De esta manera, siempre se necesita crear un nuevo mapa de bits para cada rotación, no es buena manera de juego de alto rendimiento o aplicación.

La segunda manera es:

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

De esta manera, evitamos crear nuevo mapa de bits con frecuencia, pero el mapa de bits rotación es la distorsión, la calidad de mapa de bits es peor que la primera forma.

Entonces, ¿hay una tercera forma de rotar el mapa de bits con un alto rendimiento y buena calidad?

¡Sus comentarios son realmente apreciados!

Respuesta

0

Si realmente quieres aplicaciones gráficas de alta velocidad (incluso 2D) deberías usar OpenGL en Android.

Creo que Replica Island usa OpenGL y VBO (donde estén disponibles) para renderizar su escena en 2D. Pero no puedo encontrar una referencia.

+0

Muchas gracias! He pensado en GL antes, pero no quiero usarlo, ya que mi aplicación no es solo una aplicación. – user457210

2

Asegúrese de proporcionar Paint a canvas.drawBitmap(bitmap, 0, 0, paint).

y no se olvide de usar anti-alias y filtrado de mapa de bits:

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