在一个GEF应用中,最常的操作是移位和缩放。
移位和缩放实现本身很简单,绝大部分应用的最终结果是鼠标拖动操作一放下,所操作的图就直接变幻到最终状态,虽然结果是正确的。不过总是觉得缺少一些动感。
在GEF插件自带的示例中,有一个"org.eclipse.gef.example.flow"的例子,它做的就比较炫,能动慢动作的形式展示图形变换的一个动画过程。
思路其实是很简单的,就是分别记住初态和终态,然后按照一定的时间间隔和变换次数,每次累进一点,把这些累进过程显示出来,就能看到一个动态效果了。
我也试着把它的代码应用在其他的例子,结果挺好的,只是好像这些代码有点繁锁。
昨天在学习Zest的时候,无意发现了,原来Draw2D中其实已经自带了一些API用来实现这个目标。
它们分别是:
org.eclipse.draw2d.Animation
org.eclipse.draw2d.LayoutAnimator
其中org.eclipse.draw2d.LayoutAnimator是用来注册监听的,用来监听你所想要支持的图对象,例如,你想要A图的子图的变换过程能被显示,就让A增加一个org.eclipse.draw2d.LayoutAnimator作为LayoutListener。
org.eclipse.draw2d.Animation用来记录初始和终态的信息,并真正执行变换过程的。例如起来相当简单:
首先,假如A是一个container的Figure,你想要A中所以图的变换过程都显示,则给A增加以下内容:addLayoutListener(LayoutAnimator.getDefault());
然后,通常在EditPart里会有以下样子的代码来实现移动或缩放:
((AbstractGraphicalEditPart) getParent()).setLayoutConstraint(this,
getFigure(),
new Rectangle(model.getLocation(), model.getSize()));
此处只需要增加一点点东西,即完成所需要的目标:
Animation.markBegin();
((AbstractGraphicalEditPart) getParent()).setLayoutConstraint(this,
getFigure(),
new Rectangle(model.getLocation(), model.getSize()));
Animation.run(500);
OK了,简单吧。试一下效果,如果出来了,那估计挺炫的。
分享到:
相关推荐
NULL 博文链接:https://liugang594.iteye.com/blog/1000794
GEF入门必读 GEF入门系列 GEF-whole-upload 感谢八进制
我下的资源的打包,希望有帮助,包括:GEF_Tutorial,GEF实例,入门教程,GEF-whole-upload
GEF eclipse 插件
GEF简易教程-学习GEF的入门教程,不错的gef入门教程
gef 绘图折线的实现方法。 gef API chm 格式
GEF 入门系列 GEF
GEF.rar GEF.rar GEF.rar
GEF理解之第三部分,学习gef必备文档资料啊,值得下载
GEF理解之第一部分,学习gef必备文档资料啊,值得下载
Agenda Start things off What is GEF? GEF Demo Draw2d Overview Example GEF Overview Break Hands-on Activity: Shapes Example
GEF: Graphical Editing Framework <br>GEF是一套MVC Framework,它能帮你比较容易的建立图形化的编辑器,V(View)的部分常常是基于SWT的Draw2D,因此Draw2D也看作是GEF的一部分。依赖:org.eclipse.gef***, org...
Eclipse插件GEF的介绍,对于学习GEF有很大帮助
GEF Example Source Code,
这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、GEF中对鼠标键盘事件处理的机制、流程。
gef开发实例 gef开发的好例子,比较简单的实现了MVC的架构
Gef入门开发,详细解析。 Gef入门开发,详细解析 Gef入门开发,详细解析
GEF教程及demo源码
这是我参考了一些其他资料,自己写的一个GEF示例程序。 在这个demo中你可以看到以下的功能: 1. 往画布上添加多种节点 2. 节点之间的连线 3. 节点内容的编辑功能 4. 删除连线 5. 删除节点 6. 对节点的拖动以改变...
选自某个GEF高手的个人博客 是少有的学习GEF开发的好参考资料 Eclipse插件开发之GEF