前两天也是在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。
希望对大家有帮助~~~欢迎一起探讨~~
分享到:
相关推荐
GEF Draw2D 使用例子,可以直接运行的
GEF/Draw2D入门例子 主要是Draw2d的几个入门的例子和入门的书籍 对eclipse中图形的绘画讲解
这是一个Draw2d的开发文档,可以学习一下eclipse插件开发的一些画图技术
eclipse插件框架,GEF之draw2d api,eclipse插件框架,GEF之draw2d api
GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子
GEF-ALL-3.7 GEF-ALL-3.8 官方包。 GEF Draw2d 学习资料
源码实现用gef 和draw2d画类图和连线,代码相对来说简单易懂,易于扩展
GEF: Graphical Editing Framework <br>GEF是一套MVC Framework,它能帮你比较容易的建立图形化的编辑器,V(View)的部分常常是基于SWT的Draw2D,因此Draw2D也看作是GEF的一部分。依赖:org.eclipse.gef***, org...
Eclipse的图形编辑框架GEF的参考API,chm格式
这是我参考了一些其他资料,自己写的一个GEF示例...1. 在你的Eclipse中要有GEF, Draw2d的包 2. 将此压缩包中的eclipse project引入到你的Eclipse环境中 3. 运行这个插件 4. 看到界面后,点击 Tools -- Open GEF Editor
之前学习GEF的开发,发现view层基本用到了draw2d的东西,于是整理了下相关资料,分享下。
对应版本有用,要把解压后的文件复制占到对应的插件目录,就可以使用
Agenda Start things off What is GEF? GEF Demo Draw2d Overview Example GEF Overview Break Hands-on Activity: Shapes Example
与 其他一些MVC编辑框架相比,GEF的一个主要设计目标是尽量减少模型和视图之间的依赖,好处是可以根据需要选择任意模型和视图的组合,而不必受开发框架 的局限(不过实际上还是很少有脱离Draw2D的实现)。
eclipse draw2d的端口 本项目内置可以运行在浏览器端的图形编辑框架。实现基于标签的。 第一版本使用TypeScript实现该库。第二版本使用Rust / C ++语言编写,编译为WebAssembly后,在<canvas> HTML标签上运行。 ...
GEF 进阶+源码 IBM中文文档
eclipse plug-ins pdf文档 eclipse gef pdf 文档 简单易学
GEF教程及demo源码
dudu翻译的GEF中文教程,入门最佳资料。附每章代码。
eclipse中emf,gef,ve的安装