GDI+能画出中空的线吗?

yoogle 2008-12-29 07:00:47
rt。
...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhhh63 2009-01-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 Tinary3v0 的回复:]
楼主要实现空心画线 可以参考:http://msdn.microsoft.com/en-us/library/ms535572(VS.85).aspx
效果图:

GDI+跟GDI都是一样的没有办法像设定虚线那样来设定空心 双线等属性 只能自己通过路径来实现,GDI+中就是使用GraphicsPath

首先建立一个路径 然后使用Widen方法将路径加宽 然后再绘制出路径就可以了(路径么 当然不一定是上面的Curve可以任意)。

当然 有的情况下 是需要将路径的两头空出来 也就是形成 下图这样的效…
[/Quote]

Tinary3v0 2009-01-05
  • 打赏
  • 举报
回复
楼主要实现空心画线 可以参考:http://msdn.microsoft.com/en-us/library/ms535572(VS.85).aspx
效果图:

GDI+跟GDI都是一样的没有办法像设定虚线那样来设定空心 双线等属性 只能自己通过路径来实现,GDI+中就是使用GraphicsPath

首先建立一个路径 然后使用Widen方法将路径加宽 然后再绘制出路径就可以了(路径么 当然不一定是上面的Curve可以任意)。

当然 有的情况下 是需要将路径的两头空出来 也就是形成 下图这样的效果:

注:上面两个图形不同是因为使用了GraphicsPath的Outline方法。

这个最简单的方法 就是在开始和最后的一个点 添加一个圆形 将两个端点的闭合线给盖住
当然如果你可以操作 GraphicsData 也可以根本就不绘制两个闭合线。

多了就不说了 相信楼主既然对GDI+有一定的了解 就应该能知道往下怎么弄了。
GraphicsData的问题可以参考http://blog.csdn.net/Tinary3v0/archive/2008/09/19/2949403.aspx
redleafe 2009-01-04
  • 打赏
  • 举报
回复
空画刷是露出背景色,背景未必就是纯色而且是白色,所以这种方法不对,应该用透明画刷填充。
huangshanyun 2009-01-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sdfdl 的回复:]
画两条线,粗的是黑色细的是白色,后者直接画在黑色中间……
[/Quote]

嘿嘿 理论都可行,实际也可行...
pushregistration 2008-12-30
  • 打赏
  • 举报
回复
友情up
noenoughmemory 2008-12-30
  • 打赏
  • 举报
回复
友情up
redleafe 2008-12-30
  • 打赏
  • 举报
回复
可以,手边目前没有代码,我以前实现过。就是建立一个空画刷,然后画线用画刷填充。
sdfdl 2008-12-30
  • 打赏
  • 举报
回复
画两条线,粗的是黑色细的是白色,后者直接画在黑色中间……

chinaicm 2008-12-29
  • 打赏
  • 举报
回复
说一下我的想法.

定义一个自己的画刷,用TextureBrush来初始化,用一个空心圆的图片作为TextureBrush的参数.

在DrawLine的时候,用这个画刷来构建Pen.

应该可以.在Wpf是一定可以的.

7,540

社区成员

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

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