2011-07-25 37 views
21

Điều này có vẻ như hơi tầm thường, tuy nhiên trong ứng dụng Android của tôi, tôi đang sử dụng canvas để vẽ một chuỗi các đường được kết nối với nhau. Đối với một số lý do đường dây của tôi rất rất mờ nhạt và mỏng. Tôi đã tự hỏi làm thế nào tôi có thể làm cho dòng của tôi dày hơn? Đây là mã của tôi ..Dòng vẽ vải Android - làm cho đường kẻ dày hơn

for(int i=1; i<myArrayListOfValues.size(); i++){ 

     Paint myPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
     myPaint.setStrokeWidth(8/*1 /getResources().getDisplayMetrics().density*/); 
     myPaint.setColor(0xffff0000); //color.RED 

     canvas.drawLine(myArrayListOfValues.get(i), myArrayListOfValues.get(i), myArrayListOfValues.get(i-1), myArrayListOfValues.get(i-1), myPaint);  

    } 

Một điều khác ... các đường và vòng tròn mà tôi vẽ luôn luôn là màu đen .. setColor() dường như chưa bao giờ có hiệu lực. Tôi đã thử sử dụng tên màu (ví dụ: color.red) và thậm chí cả giá trị hex của chúng (ví dụ: 0xffff0000)

+0

Bạn có thể đăng thêm một số mã từ lớp này, như toàn bộ onDraw không? hoặc lớp học nếu nó đủ nhỏ. Nó có vẻ ổn như nó được. Tại sao bạn tạo đối tượng Paint bên trong vòng lặp? tất cả các bạn lặp lại sử dụng cùng một 'myPaint' vì vậy tốt hơn để tạo nó một lần bên ngoài vòng lặp. – Shaunak

+0

Tôi đã chuyển nó ra khỏi vòng lặp ngay bây giờ. Đó là tất cả mã của tôi bên trong phương thức onDraw. Tôi chỉ muốn biết làm thế nào bạn có thể làm cho các dòng dày hơn. Nó hiển thị các dòng nhưng chúng quá mỏng – user859348

+0

Hãy thử xóa cờ anti_alias và thử sử dụng 8.0 thay thế. – Shaunak

Trả lời

18

Thử Bao gồm dòng này chỉ sau khi bạn decleare 'mypaint'

mypaint.setStyle(Paint.Style.STROKE); 
+0

làm thế nào để làm cho nó mỏng? – AndroidCrazy

+2

kéo dài nó: P – Shaunak

+1

nó không hoạt động đối với tôi. Trong JavaDoc, nó được đưa ra như thế: LƯU Ý: vì một dòng luôn được "đóng khung", Kiểu được bỏ qua trong sơn. –

1

Điều gì sẽ xảy ra nếu bạn xóa ANTI_ALIAS_FLAG? Ngoài ra, bạn nên di chuyển constructor Paint bên ngoài vòng lặp for, vì vậy nó không được tái tạo mỗi lần lặp lại.

+0

điểm công bằng về việc tạo một thể hiện sơn. ANTI_ALIAS_FLAG nằm trong đó vì tôi đọc ở đây rằng nó có thể giúp hiển thị dòng http://stackoverflow.com/questions/5377052/drawline-problem-with-paint-strokewidth-1-in-android – user859348

+1

ANTI_ALIAS_FLAG sẽ chỉ làm phẳng nếu bạn đang cố vẽ đường cong hoặc đường nghiêng. – Shaunak

22

Thay đổi giá trị của

myPaint.setStrokeWidth(8); 

đến một số nguyên lớn hơn, ví dụ:

myPaint.setStrokeWidth(50); 

nó sẽ làm cho dòng dày hơn

cũng xem Paint.setStrokeWidth(float)

+0

cách này làm việc thay vì câu trả lời "được đánh dấu đúng" –

+0

đây phải là câu trả lời thay thế! –

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