2011-09-30 17 views
31

Tworzę ścieżki i dodaje wiele linii w każdej ścieżce, używając path.moveTo(x, y) i path.lineTo(x, y). Następnie canvas.drawPath(path, paint) rysuje wszystkie ścieżki. Ale w niektórych ścieżkach między liniami znajduje się 1-2 piksele. Jak mogę usunąć te spacje? Mój kod jest coś takiego:Jak narysować gładką/zaokrągloną ścieżkę?

paint = new Paint(); 
paint.setColor(Color.RED); 
paint.setStyle(Paint.Style.FILL_AND_STROKE); 
paint.setDither(false); 
paint.setStrokeWidth(3); 
paint.setAntiAlias(true); 

for (int i = 0; i < length; i++) { 
    Path path = new Path(); 
    path.moveTo(a, b); 
    path.lineTo(c, d); 
    path.moveTo(c, d); 
    path.lineTo(e, f); 
    canvas.drawPath(path, paint); 
} 
+0

trzeba umieścić swój kod w górę. – blessenm

+0

Czy próbowałeś ustawić wygładzanie na swoim obiekcie Paint? – Bringer128

+0

Tak, zredagowałem moje pytanie. –

Odpowiedz

82

Może to doprowadzić do utworzenia co chcesz

paint.setColor(color);     // set the color 
paint.setStrokeWidth(size);    // set the size 
paint.setDither(true);     // set the dither to true 
paint.setStyle(Paint.Style.STROKE);  // set to STOKE 
paint.setStrokeJoin(Paint.Join.ROUND); // set the join to round you want 
paint.setStrokeCap(Paint.Cap.ROUND);  // set the paint cap to round too 
paint.setPathEffect(new CornerPathEffect(10)); // set the path effect when they join. 
paint.setAntiAlias(true);       // set anti alias so it smooths 

:)

+0

Potwierdzone działanie. Dzięki! –

+0

dziękuję, uratowałeś mój dzień. –

11

Prawdopodobnie nie chcą lineTo(c, d) a następnie natychmiast moveTo(c, d) który jest taki sam punkt. Jeśli to zrobisz, nie dostaniesz przyjemnego połączenia narożnego na dwóch segmentach linii, co może wyglądać jak brzydka luka.

Spróbuj usunąć tę moveTo.

+0

bardzo ładna podpowiedź. –