感谢jsyhello,这里要说明一点的是用户来操作,不是在编写代码画出这样的图.

解决方案 »

  1.   

    两个思路:
    1) 用visio实现
    2) 自己做类似的控件,控件里面可以写文字那种
      

  2.   

    一个很简单的实例,可以作为参考:)http://d.download.csdn.net/down/1848874/cicade
      

  3.   

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

  4.   


    画线部分代码写在paint事件里。
      

  5.   

    thanks, 重绘的方法写在了Panel_paint中,就不会出现消失的现象,但是如何在拖动控件时画的线也跟着一起动呢,本人是新手,向各位大虾请教了
      

  6.   

    定义一下类, 用于存贮你要画的图形的各项值, 
    线,框等全部从这个类继承.然后定义一个控件, 实现画的方法,及实现所有你可能要用的到key与mouse.如实现选中文本框, 只要重写mouseclick事件就可以, 
    如果要双击编辑, mousedbclick时, 插入一个textbox进去编辑,
      

  7.   


    感谢byshome,能否给一个参考的例子呢?thanks
      

  8.   

    看到同行,真的感慨啊~我都纠结2-3个月了~拖动图形以后,图形可以触发一个方法,就是让连接线重新计算路径~link对象和node对象要有互相关联,link对象里要有2个node对象,node对象里要有一个林肯对象的集合~你的连接线如果只是两点直接的线段的话就重新计算起点和端点就好了,如果不允许斜线,只能直角弯神马的,还要考虑自动避开其他的矩形~自动寻路~我的Q是1784885733,可以详细的说~我这有个外国的开源控件AddFlow,我就是在它的基础上自己改的~
      

  9.   

    很复杂的一套东西,等于是开发一套工作流引擎了。要好好的设计下,你这个工作流功能上要实现到哪一步。
    技术上也要对GDI等基本技术比较的熟。节点这个你可以用自定义控件。主要是划线非常的复杂,要考虑线要随着节点自动移动,然后线重叠,线交叉等问题。
      

  10.   

    能开发这个,比 office 系列也厉害了。
      

  11.   

    楼主的这个问题自身不简单了,需要精心设计才有良好的扩展性和可维护性。
    前不久,小弟也通过GDI+实现一个简单的工艺流程图定制功能,支持鼠标拖动移位、缩放大小、自我复制、热点信息显示等功能,但是即便如此仍没有你的需求复杂,如不提供图元可视区内容修改,也不提供连接线随图元移位自动移动。沉下心来,慢慢琢磨吧,终会有成果的。
      

  12.   

    其实不难,主要是数据保存的问题,如果你做过五子棋这个游戏,那就好办了,在你画的时候将每个对象都用一定的格式保存起来,比如数组就可以用来保存一些数据,当然这里不一定用它。然后就是拖动问题,拖动效果可以用MouseDown、MouseMove、MouseUp来实现,在拖动时就要重绘,重绘就要将保存的数据进行解析 画出来,每次拖动后,再将新的数据保存进去,进行数据更新,你所说的箭头无法移动,其实就是没有将箭头进行重绘,你可以在拖动矩形的时候同时重绘箭头。只要你会拖动操作这应该不是问题了,如果不知道就可以baidu一下 "winform无边框拖动问题"
      

  13.   

    你也可以这样试下:不用绘图,直接用微软提供的那基本控件放在上面,也就是动态加添控件,添加上去后还是用MouseDown、MouseMove、MouseUp这三个事件对添加的控件进行改变,比如大小,坐标,如果你感觉微软提供的控件不好看,你完全可以自定义控件,比绘图要好做得多