日期:2014-05-20  浏览次数:21100 次

【求助】用GDI+绘制Path的难题。加急~~~~~~~~~~~
在项目里面 需要使用GDI+绘制一些图形,想要的图形效果如下:

这个图形我使用的是Graphics.DrawPath 的方法绘制的,创建 GraphicsPath  对象,通过AddLine不断的添加8条线段,最后组合的这个GraphicsPath  ,然后绘制出来的,追加线段你的方式如下:



GraphicsPath  gPath = new GraphicsPath();
gPath.AddLine(点0,点1);
gPath.AddLine(点1,点2);
gPath.AddLine(点3,点4);
gPath.AddLine(点4,点5);
gPath.AddLine(点11,点10);
gPath.AddLine(点10,点9);
gPath.AddLine(点8,点7);
gPath.AddLine(点7,点6);



然后使用DrawPath绘制这个路径,我没有设置让路径闭合,但是最后的结果却是这样的


点2 和点3 、点5 点11、点9 点8、他们两个点之间被追加连接线了。
是不是需要设置什么属性,来控制它让它不去追加连接线呢??

求指教,因为需要,得使用GraphicsPath对象(因为要填充内部颜色的),点的顺序也不能改变(要和安卓应用程序的点的次序 保持一致)。所以需要限制。


------解决方案--------------------
引用:
然后使用DrawPath绘制这个路径,我没有设置让路径闭合,但是最后的结果却是这样的

了解什么叫做“路径闭合”。

程序执行得一点也没有错,是你概念错了。

程序不骗人,往往是我们自己。
------解决方案--------------------
var g = CreateGraphics();
g.DrawPath(new Pen(Color.Black, 3), gPath);
var path1 = new GraphicsPath(gPath.PathPoints,  Enumerable.Repeat((byte)1, gPath.PointCount).ToArray());
g.FillPath(new SolidBrush(Color.Pink), path1);