2010-09-24 23 views
6

Bildiğimiz üzere, bir bitmap'i 2 şekilde döndürebiliriz.Canvas.rotate ile döndürme bitmap'i hakkında soru

1 yoludur: Bu şekilde

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

, her zaman her dönüş için yeni bir bitmap oluşturmak gerek, yüksek performanslı oyun veya uygulama için iyi bir yol değildir. Bu şekilde

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

, sık sık yeni bitmap oluşturarak önlemek, ancak rotasyon bitmap bozulma, bitmap kalitesi birinci yolu daha kötüdür:

2 yoldur.

Bitmap'i yüksek performans ve kaliteli bir şekilde döndürmenin 3 yolu var mı?

Yorumlarınız gerçekten takdir edilmektedir!

cevap

0

Gerçekten yüksek hızlı grafik uygulamaları (2D bile) istiyorsanız, Android'de OpenGL kullanmalısınız.

Çoğaltma adasının 2D sahnesi oluşturmak için OpenGL ve VBO'larını (varsa) kullanacağına inanıyorum. Ama ben bir referans bulamıyorum.

+0

Çok teşekkürler döndürmek için GPU'yu kullanmalısınız! Ben daha önce GL hakkında düşünüyorum ama uygulama benim oyun sadece bir uygulama olmadığı için kullanmak istemiyorum. – user457210

2

Paint ürününü canvas.drawBitmap(bitmap, 0, 0, paint) ürününe sağladığınızdan emin olun.

Ve karşıtı takma ad ve bitmap filtreleme kullanmak unutmayın:

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