要做一个监控系统,监控N个程序,监控的细节这里就不多说了,主要想说说关于图形化界面。需求是把这N个程序之间的关系显示在WinForm中,类似一个流程图之类的,每个程序用一个图形表示,图形之间用箭头连接。正常情况下图形和箭头(表示链路)显示为绿色,一旦发生错误或异常,相应的图形或箭头就变为红色,点击该图形或箭头,可以看到详细的错误内容。
代表被监控程序的图形可以自用拖动,但不影响他们之间的逻辑关系,即箭头的指向不会变化,并且箭头可以根据图形之间的举例自动伸缩。不知我描述清楚了没有……我现在的思路是:
把每个图形和箭头做成自定义控件,在OnPaint的时候用Graphices绘制图形,但是关于箭头的指向和伸缩之类的,还不是很清楚应该怎么做。不知道大家有没有什么更好的思路,或者有没有现成的第三方控件可以缩短一下开发周期,呵呵多谢各位!
分不够再加!

解决方案 »

  1.   

    参考一下
    http://www.cnblogs.com/l_dragon/archive/2004/12/28/83082.html
      

  2.   

    是不是可以考虑直接在Form上进行画图操作,这样的话对颜色等好操作,但是灵活性比较差。如果自己写我想也只能这样了。祝好!
      

  3.   

    我昨天晚上回去以后特意试了一下。不知道能不能满足你的要求。
    先重写了Label 控件,命名为 MobileLabel 使它可以加到窗体以后,用鼠标自由拖动。
    再写了一个DrawLine类用于画线,它接收四个参数,Graphics g,Rectangle r1,Rectangle r2,Color c。它有一个Draw()方法,用于从 r1 到 r2 画一条直线。并判断r2在r1的上下左右不同方位从而连接它们不同的边。
    最后把窗体的所有 MobileLabel 的LocationChanged  事件注册到同一个方法,使得所有的 MobileLabel 控件的位置更改以后都会调用同一个方法。在这个方法中新建DrawLine对象,并调用它的Draw方法。一个DrawLine对象代表一条线。
    我知道你需要的是箭头,但我没有找到直接画箭头的方法,如果用线来画箭头,算它的坐标会比较麻烦。所以就省事直接用线条了。
      

  4.   

    如果将这些理解为线、点、面,那么用一些Gis或Cad之类的控件是不是可以呢?
      

  5.   

    或许http://www.cnblogs.com/l_dragon/archive/2004/12/28/83082.html可以帮点忙,看看吧
      

  6.   

    gisfarmer(菜菜阿杰),谢谢,不过你给的链接和蟑螂给的一样啊
      

  7.   

    【翻译】直线箭头和曲线箭头的绘制
    http://bbs.msproject.cn/Default.aspx?g=posts&t=388