2011-09-30 61 views
31

Tôi đang tạo Đường dẫn và thêm nhiều dòng trong mỗi đường dẫn bằng cách sử dụng path.moveTo(x, y)path.lineTo(x, y). Sau đó, canvas.drawPath(path, paint) đang vẽ tất cả các đường dẫn. Nhưng có khoảng cách 1-2 pixel giữa các dòng trong một số đường dẫn. Làm thế nào tôi có thể loại bỏ các không gian này? Mã của tôi là một cái gì đó như thế:Làm thế nào để vẽ đường nét mịn/tròn?

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

bạn cần phải đặt mã của bạn lên. – blessenm

+0

Bạn đã thử đặt anti-aliasing trên đối tượng Paint của mình chưa? – Bringer128

+0

Có, tôi đã chỉnh sửa câu hỏi của mình. –

Trả lời

82

lẽ điều này sẽ tạo ra những gì bạn muốn

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

Đã xác nhận hoạt động. Cảm ơn! –

+0

cảm ơn bạn, bạn đã cứu ngày của tôi. –

11

Bạn có lẽ không muốn lineTo(c, d) và sau đó ngay lập tức moveTo(c, d) đó là cùng một điểm. Nếu bạn làm điều này, bạn sẽ không nhận được một góc tốt đẹp tham gia vào hai phân đoạn dòng, mà có thể trông giống như một khoảng cách xấu xí.

Thử xóa số moveTo đó.

+0

gợi ý rất hay. –

Các vấn đề liên quan