2010-11-16 42 views
1

Je dessine actuellement des lignes sur un MapView basé sur différents GeoPoints pour indiquer des secteurs. Avec le code suivant (ce qui est dans un overlay):Dessin transparent sur un MapView

@Override 
public void draw(Canvas canvas, MapView mapView, boolean shadow) 
{ 
    for(Polygon polygonTemp : polygonList) 
    {   
     Path p = new Path(); 
     Projection projection = mapView.getProjection(); 

     boolean firstTime = true; 
     for(GeoPoint geoPoint : polygonTemp.getGeoPointList()) 
     { 
      Point drawPoint = new Point(); 
      projection.toPixels(geoPoint, drawPoint); 

      if(firstTime) 
      { 
       p.moveTo(drawPoint.x, drawPoint.y); 
       firstTime = false; 
      } 
      else 
      { 
       p.lineTo(drawPoint.x, drawPoint.y); 
      } 
     } 
     p.setFillType(Path.FillType.EVEN_ODD); 

     Paint polyPaint = new Paint(); 
     polyPaint.setStrokeWidth(1); 
     polyPaint.setStyle(Paint.Style.FILL_AND_STROKE); 
     polyPaint.setAntiAlias(true); 
     polyPaint.setColor(Color.parseColor(polygonTemp.getColor())); 
     canvas.drawPath(p, polyPaint); 
     firstTime = true; 
    } 
    super.draw(canvas, mapView, shadow); 
} 

Le problème est, je veux qu'ils soient remplis avec un certain degré de transparence, donc je peux encore voir la carte dans les secteurs remplis. J'ai essayé de paramétrer polyPaint.setAlpha(), même à 255 (ce qui devrait être complètement transparent) et ça ne fait rien, c'est complètement opaque.

Quelqu'un sait ce que je fais mal?

Répondre

1

Je ne vois pas où vous définissez l'alpha. Indépendamment de 255 n'est pas transparent, il est opaque.

Pour votre information, je suis en train de faire des choses identiques (dessin des chemins sur des superpositions de carte) et cela fonctionne très bien pour dessiner un 50% opaque, ligne rouge:

mPaint.setColor(Color.parseColor ("#88ff0000")); 
+0

Hm, se sentent un peu stupide maintenant ... pour certains La raison pour laquelle j'ai lu 255 est complètement transparent au lieu d'opague ... La chose étrange est, j'ai effectivement essayé polyPaint.setAlpha (100) et est allé jusqu'à 255, notant aucune différence dans la transparence du tout. Maintenant à la fois votre chemin et la façon setAlpha semblent fonctionner = Quoi qu'il en soit, thx: P – shokora