Dengues Studio: Google Group:http://groups.google.com/group/dengues; QQ Group:24885404.
一般来说我们很难计算两个节点之间的显示名称的位置,而且还要包括名称字符串的大小。这个是在Dengues里面实现的效果:
图一:

图二:

你可以看Dengues源代码:
org.dengues.designer.ui.process.models.CompConnectionLabel
 1 /**
 2      * Qiang.Zhang.Adolf@gmail.com Comment method "changeLocation".
 3      */
 4     public void changeLocation() {
 5         Point point = new Point();
 6 
 7         int x = connection.getSource().getLocation().x;
 8         int x2 = connection.getTarget().getLocation().x;
 9 
10         int width = x2 > x ? connection.getSource().getSize().width : connection.getTarget().getSize().width;
11         int abs = Math.abs(x2 - x) / 2 - width / 2;
12         int px = x2 > x ? x + abs + width : x2 + abs + width;
13 //这个作用是计算字符串getCompName()的大小。
14         GC gc = new GC(Display.getDefault());
15         org.eclipse.swt.graphics.Point stringExtent = gc.stringExtent(getCompName());
16         gc.dispose();
17         px = px - stringExtent.x / 2;
18         point.x = px;
19 
20         int y = connection.getSource().getLocation().y;
21         int y2 = connection.getTarget().getLocation().y;
22 
23         int height = y2 > y ? connection.getSource().getSize().height : connection.getTarget().getSize().height;
24         abs = Math.abs(y2 - y) / 2 - height / 2;
25         int py = y2 > y ? y + abs + height : y2 + abs + height;
26         py = py - stringExtent.y;
27         point.y = py;
28         setLocation(point);
29     }
这样的好就可以计算中间的位置。


Dengues论坛(http://groups.google.com/group/dengues/),一个很好的Eclipse开发者乐园.

只有注册用户登录后才能发表评论。


网站导航:
 
Dengues Studio: Google Group:http://groups.google.com/group/dengues; QQ Group:24885404.