需求是把这N个程序之间的关系显示在WinForm中,类似一个流程图之类的,每个程序用一个图形表示,图形之间用箭头连接。正常情况下图形和箭头(表示链路)显示为绿色,一旦发生错误或异常,相应的图形或箭头就变为红色,点击该图形或箭头,可以看到详细的错误内容。
代表被监控程序的图形可以自用拖动,但不影响他们之间的逻辑关系,即箭头的指向不会变化,并且箭头可以根据图形之间的举例自动伸缩。
不知我描述清楚了没有……
我现在的思路是:
把每个图形和箭头做成自定义控件,在OnPaint的时候用Graphices绘制图形,但是关于箭头的指向和伸缩之类的,还不是很清楚应该怎么做。
不知道大家有没有什么更好的思路,或者有没有现成的第三方控件可以缩短一下开发周期,呵呵
多谢各位!
分不够再加!
22 个解决方案
#1
帮顶了
#2
参考一下
http://www.cnblogs.com/l_dragon/archive/2004/12/28/83082.html
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对象代表一条线。
我知道你需要的是箭头,但我没有找到直接画箭头的方法,如果用线来画箭头,算它的坐标会比较麻烦。所以就省事直接用线条了。
先重写了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^
^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
http://bbs.msproject.cn/Default.aspx?g=posts&t=388
#1
帮顶了
#2
参考一下
http://www.cnblogs.com/l_dragon/archive/2004/12/28/83082.html
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对象代表一条线。
我知道你需要的是箭头,但我没有找到直接画箭头的方法,如果用线来画箭头,算它的坐标会比较麻烦。所以就省事直接用线条了。
先重写了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^
^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
http://bbs.msproject.cn/Default.aspx?g=posts&t=388