2017-07-05 67 views
0

我在填充畫布上繪製的路徑時出現問題。 我讀了所有這些以前的問題說如何實現在畫布上填充路徑對象?

Paint red = new Paint(); 
red.setColor(Color.RED); 
red.setStyle(Paint.Style.FILL_AND_STROKE); 

應該是它的工作方式。然後我畫了我的路徑像

Path p = new Path(); 
p.moveTo(100,100); //point1 
p.lineTo(200,200); 
p.moveTo(200,200); //point2 
p.lineTo(100,200); 
p.moveTo(100,200); //point3 
p.lineTo(100,100); 
p.close(); 

在我看來,這應該是封閉的路徑。 canvas.drawPath(p,red); 儘管樣式爲FILL_AND_STROKE,但繪製的三角形/路徑未填充。 我發生了什麼問題?

+0

如果您調用'lineTo',您也會自動移動到那裏。而最後一個'lineTo'也不是必需的,因爲關閉會走到路徑開始的地方。這應該是一個動作,兩個lineTo和一個close_only_。 –

+0

謝謝!!!它工作得很好! – Jonas1902

回答

1

沒有路徑可以填充,因爲您的路徑由多條線組成,但沒有連貫的多邊形。請參閱moveTo文檔,其內容如下:

將下一個輪廓的起點設置爲點(x,y)。

所以通過調用moveTo你只是畫線。


只使用lineTo(),它也「移動」到目標位置。你可以跳過最後的lineTo()去原點,close()會自動做到這一點。

// create a triangle 
Path p = new Path(); 
p.moveTo(100,100); //p1 
p.lineTo(200,200); //p2 
p.lineTo(100,200); //p3 
p.close();