快速业务通道

[Eclipse]GEF入门系列(一、Draw2D) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ndDispatch ())   display.sleep (); }

接下来说说图形,Draw2D中的图形全部都实现IFigure(org.eclipse.draw2d.IFigure) 接口,这些图形不仅仅是你看到的屏幕上的一块形状而已,除了控制图形的尺寸位置以外, 你还可以监听图形上的事件(鼠标事件、图形结构改变等等,来自LWS的EventDispatcher) 、设置鼠标指针形状、让图形变透明、聚焦等等,每个图形甚至还拥有自己的Tooltip,十分 的灵活。

Draw2D提供了很多缺省图形,最常见的有三类:1、形状(Shape),如矩形、三角形、椭 圆形等等;2、控件(Widget),如标签、按钮、滚动条等等;3、层(Layer),它们用来为 放置于其中的图形提供缩放、滚动等功能,在3.0版本的GEF中,还新增了GridLayer和 GuideLayer用来实现"吸附到网格"功能。在以IFigure为根节点的类树下有相当多的类,不过 我个人感觉组织得有些混乱,幸好大部分情况下我们只用到其中常用的那一部分。

[Eclipse]GEF入门系列(一、Draw2D) - 编程入门网

图2 一个Draw2D应用程序

[Eclipse]GEF入门系列(一、Draw2D)(3)

时间:2011-04-19 cnblogs bjzhanghao

每个图形都可以拥有一个边框(Border),Draw2D所提供的边框类型有GroupBoxBorder、 TitleBarBorder、ImageBorder、ButtonBorder,以及可以组合两种边框的CompoundBorder等 等,在Draw2D里还专门有一个Insets类用来表示边框在图形中所占的位置,它包含上下左右 四个整型数值。

我们知道,一个图形可以包含很多个子图形,这些被包含的图形在显示的时候必须以某种 方式被排列起来,负责这个任务的就是父图形的LayoutManager。同样的,Draw2D已经为我们 提供了一系列可以直接使用的LayoutManager,如FlowLayout适合用于表格式的排列, XYLayout适合让用户在画布上用鼠标随意改变图形的位置,等等。如果没有适合我们应用的 LayoutManager,可以自己定制。每个LayoutManager都包含某种算法,该算法将考虑与每个 子图形关联的Constraint对象,计算得出子图形最终的位置和大小。

图形化应用程序的一个常见任务就是在两个图形之间做连接,想象一下UML类图中的各种 连接线,或者程序流程图中表示数据流的线条,它们有着不同的外观,有些连接线还要显示 名称,而且最好能不交叉。利用Draw2D中的Router、Anchor和Locator,可以实现多种连接样 式,其中Router负责连接线的外观和操作方式,最简单的是设置Router为null(无Router) ,这样会使用直线连接,其他连接方式包括折线、具有控制点的折线等等(见图3),若想控 制连接线不互相交叉也需要在Router中作文章。Anchor控制连接线端点在图形上的位置,即" 锚点"的位置,最易于使用的是ChopBoxAnchor,它先假设图形中心为连接点,然后计算这条 假想连线与图形边缘的交汇点作为实际的锚点,其他Anchor还有EllipseAnchor、 LabelAnchor和XYAnchor等等;最后,Locator的作用是定位图形,例如希望在连接线中点处 以一个标签显示此连线的名称/作用,就可以使用MidpointLocator来帮助定位这个标签,其 他Locator还有ArrowLocator用于定位可旋转的修饰(Decoration,例如PolygonDecoration )、BendpointerLocator用于定位连接控制点、ConnectionEndpointLocator用于定位连接端 点(通过指定uDistance和vDistance属性的值可以设置以端点为原点的坐标)。

[Eclipse]GEF入门系列(一、Draw2D) - 编程入门网

图3 三种Router的外观

此外,Draw2D在org.eclipse.draw2d.geometry包里提供了几个很方便的类型,如 Dimension、Rectangle、Insets、Point和PointList等等,这些类型既在Draw2D内部广泛使 用,也可以被开发人员用来简化计算。例如Rectangle表示的是一个矩形区域,它提供 getIntersection()方法能够方便的计算该区域与另一矩形区域的重叠区域、getTransposed ()方法可以得到长宽值交换

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号