现在的位置: 首页 > 综合 > 正文

Draw2D简介

2013年12月10日 ⁄ 综合 ⁄ 共 1458字 ⁄ 字号 评论关闭

 

1.  概述

Draw2D是一个轻量级图形组件工具包,这些组件称为Figure。所谓轻量级系统,就是说Draw2D的组件与操作系统中的图形系统没有对应关系,Draw2D对象不过是一个普通的Java对象。Figure可以通过一种父子关系组合起来。每一个Figure都有一个边界(Bounds),它的子女必须都在这个边界中,而布局管理器用来管理子女的位置。一般来说,子女的位置会根据边界而变化,但是对于线状图元,它的边界会根据子女的位置和自己的形状发生变化。

一个轻量级系统将一个Figure和一个SWT画布(Canvas)相关联,它的EventDispatcher监听大部分SWT的事件,并将这些事件传递给相应的Figure。对于Paint消息,轻量级系统将它传递给UpdateManager,这个UpdateManager将负责重新验证Figure和它子女的位置。

 

2.  Draw2D的基本概念

Draw2D是一个很有用的工具包,它借用Java AWT窗口系统的基本思想(主要是布局的概念)进行绘图,同时提供丰富的概念,用于解决绘图过程中的遇到的问题。总体来说,Draw2D就是希望将绘图自动化,这也使得Draw2D在设计各种eclipse工具中扮演着极其重要的地位。Draw2DGEF没有绝对联系,Draw2D可以独立于GEF存在并使用,因为它只和SWT相关。

Draw2D的问题可以写很多,这里只介绍基本的概念和思想。

Figure

Draw2D最重要一个概念就是Figure,它可以看作是所有Draw2D图元的基类,事实上所有的Draw2D图元都继承自IFigure接口。所有Draw2D图元的都是Figure,不论是块状元素还是线状元素。

Figure类是一个IFigure接口的基本实现,可以用它描述一个区域(矩形或者线形)。Shape类继承自Figure类,它的子类实现了很多基本图形的功能,这包括EllipsePolylineRectangleFigureRoundedRectangleTriangleFigure类的其他子类中,还有一些比较常用的(对于绘图来说),比如LabelLayerPanel

Layout 

LayoutManager是布局的接口,它负责定位Figure子女的位置。

XYLayoutFreeformLayout相当于绝对布局,使用这种布局的Figure,它的子女位置可以自由分布。

ToolbarLayout是工具栏布局,使用这个布局的Figure,它的子女按照水平或者垂直的方式排布。

FlowLayout是流布局,使用这个布局的Figure,它的子女首先会尽量水平排布,如果排不下了,则进行垂直排布。

Draw2D中还提供了其他的布局,这里不再一一进行介绍。关于布局的话题,以后有时间再研究。

AnchorRouter

Anchor是用来定位连接线端点的对象。

ChopboxAnchor将锚点设为矩形的中心,连接线的端点将定位到矩形的边界上。EllipseAnchor将锚点定位到椭圆形的中心上,连接线的端点将定位到椭圆形的边界上。XYAnchor则用来描述独立的锚点。

Router用来负责计算连接线的中间点,根据不同的方案,折线的中间点将计算为不同的位置。

Locator 

Locator用来定位Figure的位置,和Anchor不同,Locator的不是处理线端,而是处理Figure

ConnectionEndpointLocator用来描述Figure和线端的位置。

 

 

抱歉!评论已关闭.