在项目里面 需要使用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对象(因为要填充内部颜色的),点的顺序也不能改变(要和安卓应用程序的点的次序 保持一致)。所以需要限制。
------解决方案--------------------------------------------------------
了解什么叫做“路径闭合”。
程序执行得一点也没有错,是你概念错了。
程序不骗人,往往是我们自己。
------解决方案--------------------------------------------------------
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);