2014-08-27 173 views
0

我试图绘制多个箭头窗体上的彩色轮廓,到目前为止我用下面的代码:绘制箭头与轮廓

Pen arrow_pen = new Pen(Color.FromArgb(r, g, b), 8); 
arrow_pen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; 
GraphicsPath arrow = new GraphicsPath(); 
     arrow.AddLine(
      coordinates1, 
      coordinates2, 
      coordinates3, 
      coordinates4 
      ); 
obj.DrawPath(arrow_pen, arrow); 
obj.FillPath(Brushes.White, arrow); 
arrow.Dispose(); 
arrow_pen.Dispose(); 

它把大纲的箭头,但它然后剂量用白色填充路径(obj.FillPath什么都不做),我错过了什么,或者我是否以错误的方式做这件事?

+0

'obj'绝对是'Graphics'类型的吗? – 2014-08-27 08:21:38

+0

其定义如下:'使用(Graphics obj = this.CreateGraphics())' – Hauba 2014-08-27 08:29:17

+0

改为使用AddPolygon()。切勿使用CreateGraphics。 – 2014-08-27 08:41:18

回答

1

文档说:

填充一个GraphicsPath中的内部

您的路径只有一行,没有关闭。因此,根据文档:

如果路径参数表示的路径未关闭,则会从最后一个点向第一个点添加一个附加段以关闭路径。

所以现在你有两条完全没有区域的相同的线。该区域已满,但您无法看到它,因为它的像素宽度为零。您需要定义一个面积大于零的封闭图来实际填充某些内容。

+0

任何其他绘制箭头的方式,所以我可以填充它,只给我可以定义为抽象艺术的结果,所以我走向愚蠢的方式,画了一个更大的黑色箭头,然后是一个更小的彩色箭头,稍微多一点工作但像魅力一样工作。 – Hauba 2014-08-27 11:09:19