2011-09-30 17 views
31

मैं path.moveTo(x, y) और path.lineTo(x, y) का उपयोग कर पथ बना रहा हूं और प्रत्येक पथ में बहु लाइन जोड़ रहा हूं। फिर canvas.drawPath(path, paint) सभी पथों को चित्रित कर रहा है। लेकिन कुछ पथों में लाइनों के बीच 1-2 पिक्सेल स्पेस हैं। मैं इन रिक्त स्थान को कैसे हटा सकता हूं?चिकनी/गोलाकार पथ कैसे आकर्षित करें?

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

आप अपने कोड डाल करने की आवश्यकता पैदा करेगा। – blessenm

+0

क्या आपने अपनी पेंट ऑब्जेक्ट पर एंटी-एलाइजिंग सेट करने का प्रयास किया है? – Bringer128

+0

हां, मैंने अपना प्रश्न संपादित किया। –

उत्तर

82

हो सकता है कि यह तुम क्या चाहते

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

काम करने की पुष्टि की। धन्यवाद! –

+0

धन्यवाद, आपने मेरा दिन बचाया। –

11

आप शायद lineTo(c, d) नहीं करना चाहते और फिर तुरंत moveTo(c, d) जो एक ही बात है: मेरे कोड ऐसा ही कुछ है। यदि आप ऐसा करते हैं, तो आपको दो लाइन खंडों पर एक अच्छा कोने शामिल नहीं होगा, जो एक बदसूरत अंतर की तरह दिख सकता है।

moveTo को हटाने का प्रयास करें।

+0

बहुत अच्छा संकेत। –

संबंधित मुद्दे