100分求: winform中如何动态画流程图?

mychinabc 2011-05-04 03:14:54
  现工作上有一要求,就是画出一个审批的流程图,能拖动矩形,能连接二个矩形画一个带箭头的线,矩形中可以添加字和图片.
向各位大侠请教.


样子就是这样的:
...全文
800 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyr987503101 2014-01-23
  • 打赏
  • 举报
回复
现在我也遇到这个需求,不知道从哪下手,LZ这个问题应该早解决了吧,能否看下你的例子呢。。。
mychinabc 2011-10-18
  • 打赏
  • 举报
回复
最后实现我画成图片然后简单的显示出来,没有做拖动这类高级的东西,还是很感谢大家的帮助和讨论。
xiaoyu821120 2011-09-23
  • 打赏
  • 举报
回复
很复杂的一套东西,等于是开发一套工作流引擎了。要好好的设计下,你这个工作流功能上要实现到哪一步。
技术上也要对GDI等基本技术比较的熟。节点这个你可以用自定义控件。主要是划线非常的复杂,要考虑线要随着节点自动移动,然后线重叠,线交叉等问题。
_沐阳_ 2011-09-23
  • 打赏
  • 举报
回复
看到同行,真的感慨啊~我都纠结2-3个月了~

拖动图形以后,图形可以触发一个方法,就是让连接线重新计算路径~

link对象和node对象要有互相关联,link对象里要有2个node对象,node对象里要有一个林肯对象的集合~

你的连接线如果只是两点直接的线段的话就重新计算起点和端点就好了,如果不允许斜线,只能直角弯神马的,还要考虑自动避开其他的矩形~自动寻路~

我的Q是1784885733,可以详细的说~我这有个外国的开源控件AddFlow,我就是在它的基础上自己改的~
「已注销」 2011-09-23
  • 打赏
  • 举报
回复
你也可以这样试下:不用绘图,直接用微软提供的那基本控件放在上面,也就是动态加添控件,添加上去后还是用MouseDown、MouseMove、MouseUp这三个事件对添加的控件进行改变,比如大小,坐标,如果你感觉微软提供的控件不好看,你完全可以自定义控件,比绘图要好做得多
「已注销」 2011-09-23
  • 打赏
  • 举报
回复
其实不难,主要是数据保存的问题,如果你做过五子棋这个游戏,那就好办了,在你画的时候将每个对象都用一定的格式保存起来,比如数组就可以用来保存一些数据,当然这里不一定用它。然后就是拖动问题,拖动效果可以用MouseDown、MouseMove、MouseUp来实现,在拖动时就要重绘,重绘就要将保存的数据进行解析 画出来,每次拖动后,再将新的数据保存进去,进行数据更新,你所说的箭头无法移动,其实就是没有将箭头进行重绘,你可以在拖动矩形的时候同时重绘箭头。只要你会拖动操作这应该不是问题了,如果不知道就可以baidu一下 "winform无边框拖动问题"
EdsionWang 2011-09-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mychinabc 的回复:]
thanks, 重绘的方法写在了Panel_paint中,就不会出现消失的现象,但是如何在拖动控件时画的线也跟着一起动呢,本人是新手,向各位大虾请教了
[/Quote]
MouseMove什么的事件,就可以实现边拖边画线。楼主这东西太难,过来帮顶,等高手
ganguozai 2011-09-23
  • 打赏
  • 举报
回复
楼主的这个问题自身不简单了,需要精心设计才有良好的扩展性和可维护性。
前不久,小弟也通过GDI+实现一个简单的工艺流程图定制功能,支持鼠标拖动移位、缩放大小、自我复制、热点信息显示等功能,但是即便如此仍没有你的需求复杂,如不提供图元可视区内容修改,也不提供连接线随图元移位自动移动。沉下心来,慢慢琢磨吧,终会有成果的。
l245382052 2011-09-23
  • 打赏
  • 举报
回复
路过学习中,友情帮顶
xfxlylove 2011-09-23
  • 打赏
  • 举报
回复
学习下,准备做相关的东东!
sjfbtnmcn 2011-09-23
  • 打赏
  • 举报
回复
能开发这个,比 office 系列也厉害了。
mychinabc 2011-07-13
  • 打赏
  • 举报
回复
再次回来顶一下
mychinabc 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 byshome 的回复:]

定义一下类, 用于存贮你要画的图形的各项值,
线,框等全部从这个类继承.

然后定义一个控件, 实现画的方法,及实现所有你可能要用的到key与mouse.

如实现选中文本框, 只要重写mouseclick事件就可以,
如果要双击编辑, mousedbclick时, 插入一个textbox进去编辑,
[/Quote]

感谢byshome,能否给一个参考的例子呢?thanks
byshome 2011-05-13
  • 打赏
  • 举报
回复
定义一下类, 用于存贮你要画的图形的各项值,
线,框等全部从这个类继承.

然后定义一个控件, 实现画的方法,及实现所有你可能要用的到key与mouse.

如实现选中文本框, 只要重写mouseclick事件就可以,
如果要双击编辑, mousedbclick时, 插入一个textbox进去编辑,
mychinabc 2011-05-06
  • 打赏
  • 举报
回复
thanks, 重绘的方法写在了Panel_paint中,就不会出现消失的现象,但是如何在拖动控件时画的线也跟着一起动呢,本人是新手,向各位大虾请教了
xiaoyuzi 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mychinabc 的回复:]

现在又发现一个问题:
在WinForm中画出线后,点击其它新的窗体(遮住了Winform),那么画的线就不存在了,怎么解决?
[/Quote]

画线部分代码写在paint事件里。
mychinabc 2011-05-06
  • 打赏
  • 举报
回复
现在又发现一个问题:
在WinForm中画出线后,点击其它新的窗体(遮住了Winform),那么画的线就不存在了,怎么解决?
mychinabc 2011-05-06
  • 打赏
  • 举报
回复
现在实现的方法是自己写组件动态添加按钮,现在的问题是:如何拖动按钮下面的连接线也跟着一起拖动?
有没有做过的大侠?
rabbit5 2011-05-04
  • 打赏
  • 举报
回复
一个很简单的实例,可以作为参考:)

http://d.download.csdn.net/down/1848874/cicade
  • 打赏
  • 举报
回复
两个思路:
1) 用visio实现
2) 自己做类似的控件,控件里面可以写文字那种
加载更多回复(4)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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