`

Draw2d 连线二 ChopboxAnchor EllipseAnchor

 
阅读更多

关键字:Draw2d,连线,ChopboxAnchor  EllipseAnchor

连线一提到的连线其实并没有连接到图形的边框上,这个问题主要取决于锚点(Anchor)。

如果将代码中的椭圆改为正圆就很容易看出来了。

 

public class HelloWorld2 {
	public static void main(String args[]) {
		Shell shell = new Shell();
		shell.setText("Draw2d Hello World");
		shell.setSize(400, 400);
		shell.open();
		
		// create content 4 shell.
		createContent4Shell(shell);
		
		while (!shell.isDisposed ()) {
			if (!Display.getDefault().readAndDispatch ())
				Display.getDefault().sleep ();
		}
	}

	private static void createContent4Shell(Shell shell) {
		Panel rootFigure = new Panel();
		rootFigure.setLayoutManager(new XYLayout());
		
		IFigure figure1 = new Ellipse();
		IFigure figure2 = new Ellipse();
//		IFigure figure2 = new Triangle();
		
		// --------------------------------------------------------
		// add connection
		PolylineConnection connection = new PolylineConnection();
		connection.setSourceAnchor(new ChopboxAnchor(figure1));
		connection.setTargetAnchor(new ChopboxAnchor(figure2));
		// add connection
		// --------------------------------------------------------

		rootFigure.add(figure1,new Rectangle(10,10,60,30));
		rootFigure.add(figure2,new Rectangle(80,90,60,60));
		rootFigure.add(connection);
		
		LightweightSystem lws = new LightweightSystem(shell);
		lws.setContents(rootFigure);
	}
}

 

 




 
 这里的关键的就是锚点,采用了ChopboxAnchor 的方法,ChopboxAnchor 的返回的是和矩形边框的交接点,而不是和所画图形的交点。解决这个问题就要采用EllipseAnchor定锚点的方法了。

将代码的这个改一下就行了。

connection.setTargetAnchor(new EllipseAnchor(figure2));

 

 这样就OK了。

  • 大小: 3.2 KB
  • 大小: 5.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics