`
zhongkem
  • 浏览: 151505 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Draw2d中的连线路由器及gef中连线抗锯齿

阅读更多

前两天也是在javaEye中看到一位大哥关于gef中连线抗锯齿的文章,学习之后感觉效果不错,如果你也正在用gef这个框架开发东西,不妨把下面这些代码加入,一定会让你的连线视觉效果好些~~

 

protected void refreshVisuals() {  
  super.refreshVisuals();
  //以下这些代码是设置连接线抗锯齿
  ConnectionLayer connectionLayer = (ConnectionLayer) getLayer(LayerConstants.CONNECTION_LAYER);
  connectionLayer.setConnectionRouter(new ShortestPathConnectionRouter(figure));
  //new ManhattanConnectionRouter()只能画垂直和水平线
  //new FanRouter()若两结点间有两条线,就把他们分开表示~~
      if ((getViewer().getControl().getStyle() & SWT.MIRRORED ) == 0)
          connectionLayer.setAntialias(SWT.ON); 
      Animation.run(400);
 }

 

首先说下上面这段代码加到哪里,一般来说用gef画图都会有一个容器类,也就是包含其它所有图形模型的模型,这样的话序列化反序列化都会很容易。那么就在这个容器模型对应的EditPart中覆盖registerVisuals() 方法,加上上面这些代码就可以了~~~是不是很简单。。。

 

再说说draw2d中的连线路由器ConnectionRouter,连线路由器决定了图形之间连线的路线。主要有以下几种

1.AutomaticRouter,这是一个抽象类,要用的话得用它的实现类FanRouter ,这个路由会判断两结点间是否有重复线,有的话会把重复的线分开,  变成两条线~~

2.BendpointConnectionRouter,增加连接线的路由点 ,让你的连线有路由点,从而可以方便的改变方向

3. ConnectionRouter.NullConnectionRouter,这是默认的路由,没增加特殊功能,一般用null表示就行,如下面的代码设成connectionLayer.setConnectionRouter(null),就可以了。

4. ManhattanConnectionRouter,这个路由能保证画出来的线是垂直或水平的,如果你需要这样的效果就可以设置成这个路由。

5. ShortestPathConnectionRouter 最短路径路由器,这个路由还是比较强大的,可以方便的避免连线穿越结点,它会以最近的路径绕开其它结点,完成连线。

当然了,如果以上这些路由都不能满足你的要求,你可以自定义一个路由器,只要实现ConnectionRouter接口即可,详细教程请参考http://www.ibm.com/developerworks/cn/opensource/os-ecl-gef/part2/index.html

 

希望对大家有帮助~~~欢迎一起探讨~~

分享到:
评论
1 楼 xdymzhang 2010-10-15  
你好,我用了您的方法,有个小问题:比如要建立A到B的连接,点击A,鼠标移到B上后出现了shortestPathRouter的连接轨迹,但是点击B后实现的连接却不是按那个轨迹连接的,只是一条直线,请问我的哪块还没有配置好?谢了!

相关推荐

    GEF/Draw2D入门例子

    GEF(Graphical Editing Framework)和Draw2D是Eclipse项目中的两个核心组件,主要用于构建图形用户界面(GUI)特别是图形编辑工具。它们为开发者提供了强大的图形绘制和交互功能,使得创建复杂的图形编辑器变得简单...

    Draw2D 使用例子

    在IT领域,特别是图形用户界面(GUI)的开发中,Draw2D和GEF(Graphics Editing Framework)是两个重要的开源库,主要用于构建可定制的、交互式的2D图形编辑工具。下面将详细介绍这两个库以及如何在实际项目中使用...

    GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料

    【GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料】是一份综合性的资源包,包含了GEF(Graphical Editing Framework)的3.7和3.8版本以及与其相关的Draw2D库的学习材料。GEF是Eclipse平台上用于构建图形化编辑器框架的...

    Draw2d画线例子

    Draw2d是Eclipse RCP(Rich Client Platform)框架中的一个子项目,专门用于2D图形绘制和交互。它提供了一套丰富的API,允许开发者在Java应用程序中创建、编辑和展示复杂的图形界面,尤其适用于创建流程图、图表和...

    Eclipse GEF+Draw2DAPI

    总之,Eclipse GEF和Draw2D是Eclipse生态中强大的图形编辑工具,结合RCP,可以创建出专业级的图形化应用程序。通过深入研究GEFAPI.CHM和draw2d_api-doc.CHM,开发者能够更好地掌握这两者的核心特性和用法,提升自己...

    用draw2d画uml图源码实例

    在这个"用draw2d画uml图源码实例"中,我们看到开发者利用GEF和Draw2D库创建了一个简单的UML类图绘制工具。下面将详细解释这两个技术以及如何结合它们来实现UML图的绘制。 1. **Draw2D**: Draw2D是Java Swing或 SWT...

    使用Draw2d做的流程图工具

    Draw2d是Java图形库Swing或 SWT中的一个子库,主要用于创建2D图形和复杂的图形用户界面,尤其适用于绘制流程图、图表和其他图形结构。它提供了丰富的图形绘制功能,如线条、形状、文本和图像的处理,以及交互式操作...

    eclipse插件框架GEF之draw2d api

    eclipse插件框架,GEF之draw2d api,eclipse插件框架,GEF之draw2d api

    draw2d/gef入门例子

    GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子

    GEF-draw2d-sdk-3.6.1.zip

    【GEF-draw2d-sdk-3.6.1.zip】是一个包含图形编辑框架(GEF)和draw2d库的软件开发工具包,适用于Eclipse集成开发环境。该压缩包主要用于扩展Eclipse的功能,特别是在创建图形用户界面(GUI)和图形编辑应用方面。在...

    GEF-ALL-3.2.2

    GEF: Graphical Editing Framework <br>GEF是一套MVC Framework,它能帮你比较容易的建立图形化的编辑器,V(View)的部分常常是基于SWT的Draw2D,因此Draw2D也看作是GEF的一部分。依赖:org.eclipse.gef***, org...

    Draw2d布局器

    在Eclipse的GEF(Graphical Editing Framework)框架中,Draw2d库提供了多种布局管理器,使得开发者能够灵活地设计和组织图形元素。本文将深入探讨Draw2d中的几种常见布局管理器,包括BorderLayout、ToolbarLayout、...

    GEF基础知识

    这是因为GEF的很多核心概念与API设计都是与Draw2D紧密相关的,尤其是它的`AbstractGraphicalEditPart`类中的`createFigure()`方法,要求返回的是Draw2D中的`IFigure`对象。因此,要深入理解和使用GEF,了解Draw2D的...

    GEF 进阶+源码.rar

    10. **样例代码(Sample Code)**:`samplecode.rar`很可能包含了实际的编程示例,这些示例可以帮助开发者理解如何在实践中应用GEF和DRAW2D,例如创建自定义图形元素、实现特定的编辑操作等。 通过深入学习和实践...

    GEF 开发简单示例

    这是我参考了一些其他资料,自己写的一个GEF示例...1. 在你的Eclipse中要有GEF, Draw2d的包 2. 将此压缩包中的eclipse project引入到你的Eclipse环境中 3. 运行这个插件 4. 看到界面后,点击 Tools -- Open GEF Editor

    GEF开发指南---插件开发

    - **Draw2D**:Draw2D是GEF的一部分,主要负责绘制图形元素。 - **EMF**:EMF(Eclipse Modeling Framework)是一个用于创建模型驱动的应用程序的框架,与GEF结合使用时能够处理复杂的模型数据。 #### 三、开发环境...

    GEF典型实现例子

    这两篇文章可能分别由CSDN博主和博客园博主分享了他们在使用GEF和相关技术,如Draw2D(用于在GEF中绘制2D图形的库)时的经验和技巧。 在深入理解GEF时,我们需要关注以下几个核心概念: 1. **模型-视图-控制器(MVC...

    悬空连线相关类的实现

    在图形编辑框架(Graphical Editing Framework,简称GEF)中,悬空连线是一种常见的功能,它允许用户在图形画布上创建未连接到任何端点的连接线,以表示潜在的连接关系。这类连线通常在用户尝试建立节点之间的连接时...

    eclipse GEF 插件

    Eclipse GEF(Graphical Editing Framework)插件是Eclipse IDE中的一个重要组成部分,它为开发者提供了构建图形化用户界面和图形化编辑器的强大工具。在Eclipse IDE中,GEF主要用于创建模型驱动的设计环境,例如...

Global site tag (gtag.js) - Google Analytics