【高分求思路】关于图形化界面!解决方案

【高分求思路】关于图形化界面!
要做一个监控系统,监控N个程序,监控的细节这里就不多说了,主要想说说关于图形化界面。

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

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

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

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

多谢各位!
分不够再加!

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

可以帮点忙,看看吧
------解决方案--------------------
【翻译】直线箭头和曲线箭头的绘制
http://bbs.msproject.cn/Default.aspx?g=posts&t=388