【高分求思路】关于图形化界面!

时间:2022-11-08 10:58:27
要做一个监控系统,监控N个程序,监控的细节这里就不多说了,主要想说说关于图形化界面。

需求是把这N个程序之间的关系显示在WinForm中,类似一个流程图之类的,每个程序用一个图形表示,图形之间用箭头连接。正常情况下图形和箭头(表示链路)显示为绿色,一旦发生错误或异常,相应的图形或箭头就变为红色,点击该图形或箭头,可以看到详细的错误内容。
代表被监控程序的图形可以自用拖动,但不影响他们之间的逻辑关系,即箭头的指向不会变化,并且箭头可以根据图形之间的举例自动伸缩。

不知我描述清楚了没有……

我现在的思路是:
把每个图形和箭头做成自定义控件,在OnPaint的时候用Graphices绘制图形,但是关于箭头的指向和伸缩之类的,还不是很清楚应该怎么做。

不知道大家有没有什么更好的思路,或者有没有现成的第三方控件可以缩短一下开发周期,呵呵

多谢各位!
分不够再加!

22 个解决方案

#1


帮顶了

#2


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

#3


感谢两位
再顶

#4


再顶

#5


留个记号!

#6


别光留记号啊,给个思路啊

#7


这些程序你都有源代码么?

#8


友情UP一下

#9


这不是在求源代码嘛,或者给个思路,用什么样的第三方控件比较好

#10


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

#11


谢谢,有没有画图方便的第三方控件啊

#12


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

#13


呵呵,有点妙

#14


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

#15


思路有了.就直接画贝...

^o^

#16


呵呵,谢谢各位
项目比较紧,时间和能力有限,如果有现成的最好了
实在没有,也只好自己写了

#17


或许http://www.cnblogs.com/l_dragon/archive/2004/12/28/83082.html

可以帮点忙,看看吧

#18


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

#19


up

#20


up

#21


UP下.这个比较难搞哦LZ

#22


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

#1


帮顶了

#2


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

#3


感谢两位
再顶

#4


再顶

#5


留个记号!

#6


别光留记号啊,给个思路啊

#7


这些程序你都有源代码么?

#8


友情UP一下

#9


这不是在求源代码嘛,或者给个思路,用什么样的第三方控件比较好

#10


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

#11


谢谢,有没有画图方便的第三方控件啊

#12


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

#13


呵呵,有点妙

#14


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

#15


思路有了.就直接画贝...

^o^

#16


呵呵,谢谢各位
项目比较紧,时间和能力有限,如果有现成的最好了
实在没有,也只好自己写了

#17


或许http://www.cnblogs.com/l_dragon/archive/2004/12/28/83082.html

可以帮点忙,看看吧

#18


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

#19


up

#20


up

#21


UP下.这个比较难搞哦LZ

#22


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