2013-05-21 2 views
1

j'ai créer une carte avec toutes les images à l'aide de ce code:Marqueurs granuleuses avec rotation dans GoogleMaps

icon_pin = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.arrow); 
int w = icon_pin.getWidth(); 
int h = icon_pin.getHeight(); 
Bitmap.Config conf = Bitmap.Config.ARGB_8888; 

Bitmap bmp = Bitmap.createBitmap(w, h, conf); 


final float centerX = w/2.0f; 
final float centerY = h/2.0f; 

Canvas canvas = new Canvas(bmp); 
canvas.rotate(m.getDirection(), centerX, centerY); 

canvas.drawBitmap(icon_pin, new Matrix(), null); 

mais quand je pivoter l'image, le résultat est très granuleuse (comme la flèche verte dans cet exemple: http://img837.imageshack.us/img837/4624/screenshot2013052111381.png)

J'ai quelque chose de mal? est-il possibile d'améliorer la définition?

+0

Quelque chose à propos de l'aliasing probablement. –

Répondre

1

Il semble que vous ayez besoin de dessiner avec l'anti-alias activé. Dans cette ligne:

canvas.drawBitmap(icon_pin, new Matrix(), null);

Vous pouvez spécifier un objet Paint à utiliser pour le dessin. Ci-dessus, vous utilisez null. Vous pouvez ajouter ces lignes avant votre appel à canvas.drawBitmap():

Paint myPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
myPaint.setFilterBitmap(true); 

changer ensuite votre dernière ligne:

canvas.drawBitmap(icon_pin, new Matrix(), myPaint);

Ce code crée un nouvel objet Paint avec anti-aliasing activé, ce qui Espérons que vous prendrez les bords irréguliers sur vos marqueurs.

Remarque: Vous pouvez également utiliser Paint pour appliquer des couleurs, des ombrages alpha et d'autres effets sympas à votre dessin. Voir la documentation Android here.

+0

cela fonctionne parfaitement .. Merci beaucoup – Tirrel