2011-07-25 246 views
21

這看起來應該有點微不足道,但是在我的Android應用程序中,我使用畫布繪製了連接在一起的一系列線條。出於某種原因,我的線條非常非常微弱。我想知道如何讓我的線條變粗?這是我的代碼..Android畫布畫線 - 使線條變粗

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);  

    } 

另一件事是..我的線條和圈子,我畫總是黑色.. setColor()似乎從來沒有任何效果。我嘗試過使用顏色名稱(例如color.red)甚至它們的十六進制值(例如0xffff0000)

+0

你能從這個類發佈一些更多的代碼,比如整個onDraw嗎?或者課程足夠小。它看起來沒問題,因爲它是。爲什麼在循環內部創建Paint對象?你所有的迭代使用相同的'myPaint',所以它最好在循環之外創建它。 – Shaunak

+0

我現在已經把它移到循環之外了。這就是我在onDraw方法中的所有代碼。我只是想知道如何讓線條變粗。它顯示行,但它們太薄 – user859348

+0

嘗試刪除anti_alias標誌,並嘗試使用8.0代替。 – Shaunak

回答

18

嘗試加入這一行,你decleare 'mypaint'

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

如何讓它變瘦? – AndroidCrazy

+2

這是伸展它:P – Shaunak

+1

它沒有爲我工作。在JavaDoc中,其給定如下所示: 注意:由於一行總是「成幀」,因此該樣式在繪畫中被忽略。 –

1

如果刪除ANTI_ALIAS_FLAG,會發生什麼?另外,您應該將Paint構造函數移到for循環外面,這樣每次迭代都不會重新創建。

+0

關於創建繪圖實例的公平點。 ANTI_ALIAS_FLAG在那裏,因爲我在這裏閱讀,它可以幫助渲染該行http://stackoverflow.com/questions/5377052/drawline-problem-with-paint-strokewidth-1-in-android – user859348

+1

ANTI_ALIAS_FLAG只會使平滑如果您正在嘗試繪製曲線或斜線,請使用此行。 – Shaunak

22

變化只是後

myPaint.setStrokeWidth(8); 

到一個更大的整數值,例如:

myPaint.setStrokeWidth(50); 

它會使線條變粗

另請參閱Paint.setStrokeWidth(float)

+0

acutally這工作,而不是「標記正確」的答案 –

+0

這應該是答案,而不是! –