【求助】用GDI+绘制Path的难题。加急~~~~~~~~~~~

猴头 2012-12-14 06:40:24
在项目里面 需要使用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对象(因为要填充内部颜色的),点的顺序也不能改变(要和安卓应用程序的点的次序 保持一致)。所以需要限制。

...全文
384 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
猴头 2012-12-20
  • 打赏
  • 举报
回复
引用 17 楼 jshi123 的回复:
嗯。是gis吗
不是GIS类似CAD制图的.
jshi123 2012-12-17
  • 打赏
  • 举报
回复
嗯。是gis吗
猴头 2012-12-17
  • 打赏
  • 举报
回复


猴头 2012-12-17
  • 打赏
  • 举报
回复
引用 13 楼 jshi123 的回复:
是的。类型1表示连通,0表示断开。
杠杆 测试了一遍,创建一个新的path然后填充达到效果了, 谢谢 帮忙.
猴头 2012-12-16
  • 打赏
  • 举报
回复
引用 13 楼 jshi123 的回复:
是的。类型1表示连通,0表示断开。
好的,今天休息一天,明天去公司 去测试下,先谢谢了
jshi123 2012-12-15
  • 打赏
  • 举报
回复
GraphicsPath gPath = new GraphicsPath(); gPath.AddLine(点0,点1); gPath.AddLine(点1,点2); gPath.StartFigure(); gPath.AddLine(点3,点4); gPath.AddLine(点4,点5); gPath.StartFigure(); gPath.AddLine(点11,点10); gPath.AddLine(点10,点9); gPath.StartFigure(); gPath.AddLine(点8,点7); gPath.AddLine(点7,点6);
jshi123 2012-12-15
  • 打赏
  • 举报
回复
是的。类型1表示连通,0表示断开。
猴头 2012-12-15
  • 打赏
  • 举报
回复
引用 11 楼 jshi123 的回复:
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.FillPat……
这是又创建了一个新的有相同点列表的路径专门用于填充内部颜色的吗?? 另外,对于点类型的那个字节数组 我也没搞明白是什么意思?子啊MSDN上没有详细的介绍啊.wo 在测试的时候想给不同的点赋予不同的类型,但是看不出什么效果...... 这点 请教下.....
  • 打赏
  • 举报
回复
引用 楼主 yan_hyz 的回复:
然后使用DrawPath绘制这个路径,我没有设置让路径闭合,但是最后的结果却是这样的
了解什么叫做“路径闭合”。 程序执行得一点也没有错,是你概念错了。 程序不骗人,往往是我们自己。
jshi123 2012-12-15
  • 打赏
  • 举报
回复
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);
猴头 2012-12-15
  • 打赏
  • 举报
回复
引用 9 楼 jshi123 的回复:
用DrawPath画,不要用FillPath这样的填充方法
那如果需要填充内部区域,那该如何填充呢??
Vicky198988 2012-12-15
  • 打赏
  • 举报
回复
接分。。。。不懂。。。专门捧场
jshi123 2012-12-15
  • 打赏
  • 举报
回复
用DrawPath画,不要用FillPath这样的填充方法
猴头 2012-12-15
  • 打赏
  • 举报
回复
哎呀,又试了好几次,通过组合各个方法的调用方式还是达不到xiangyaodexiaoguo... 纠结啊~~~~~~~~~~~~~~~~~~
猴头 2012-12-15
  • 打赏
  • 举报
回复
引用 3 楼 jshi123 的回复:
GraphicsPath gPath = new GraphicsPath();
gPath.AddLine(点0,点1);
gPath.AddLine(点1,点2);
gPath.StartFigure();
gPath.AddLine(点3,点4);
gPath.AddLine(点4,点5);
gPath.StartFigure();
gPath.Ad……


我在使用StartFigure();方法的时候行不通啊,这样绘制完图形后,填充图形颜色,他会把我标红的这四个三角区域填充颜色,如图:
猴头 2012-12-15
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
引用 楼主 yan_hyz 的回复:然后使用DrawPath绘制这个路径,我没有设置让路径闭合,但是最后的结果却是这样的 了解什么叫做“路径闭合”。 程序执行得一点也没有错,是你概念错了。 程序不骗人,往往是我们自己。
那么 什么才是“路径闭合”或者“闭合路径”?说说你的理解,或许我理解错误了??
Aaron_ 2012-12-14
  • 打赏
  • 举报
回复
猴头 2012-12-14
  • 打赏
  • 举报
回复
另外 我也查了MSDN,试了好几个说的方法,行不通..... 也可能没找到正确的属性或者方法. 才接触GDI+两个多月,认识的不多,所以上来请大伙帮帮忙.

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧