2017-07-05 38 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();