2012-07-27 10 views
6

Narysowałem linię między punktami. pomyślnie go narysował. kiedy widzimy mapę, linia kreślarska wygląda jak pikselowana, gdy towarzyszy jej następny rysunek. jak połączyć linię?Narysuj gładką linię między punktami na Androidzie

enter image description here

Mój kod jest tutaj,

@Override 
public void draw(Canvas canvas, MapView mapview, boolean shadow) { 
    super.draw(canvas, mapview, shadow); 
    if(! routeIsActive) return; 

    mapview.getProjection().toPixels(locpoint, pp);  // Converts GeoPoint to screen pixels 

    int xoff = 0; 
    int yoff = 0; 
    int oldx = pp.x; 
    int oldy = pp.y; 
    int newx = oldx + xoff; 
    int newy = oldy + yoff; 

    paint.setAntiAlias(true); 
    paint.setDither(true); 
      paint.setStrokeWidth(7); 
    for(int i=0; i<numberRoutePoints-1; i++) 
    { 
     switch(routeMode.get(i)) 
     { 
     case 0: 
      paint.setColor(Color.parseColor("#666666")); 
      break; 
     case 1: 
      paint.setColor(Color.parseColor("#0EA7D6")); 
      break; 
     case 2: 
      paint.setColor(Color.parseColor("#654321")); 
      break; 
     case 3: 
      paint.setColor(Color.parseColor("#123456")); 
      break; 
     } 

     mapview.getProjection().toPixels(routePoints.get(i), pold); 
     oldx = pold.x; 
     oldy = pold.y; 
     mapview.getProjection().toPixels(routePoints.get(i+1), pnew); 
     newx = pnew.x; 
     newy = pnew.y; 

     canvas.drawLine(oldx, oldy, newx, newy, paint); 
    } 

} 

Odpowiedz

3

Trzeba zmienić styl obiektu farby tak:

paint.setStrokeCap(Cap.ROUND); 
+0

Hi @AndyRes. dzięki stary. działa dobrze. – RVG

2

Jeśli narysować okrąg na początku i na końcu każdej linii (średnica okręgu musi być wysokość linii), myślę, że będzie rade czy może drawRoundRect płótna można zrobić to dobrze

Powiązane problemy