最近时而忙一阵,也在看些书,几篇文章都没写完.一晃8月最后一天,昝发篇简洁的,努力写些文章.

 

*概述

---这篇文章说明了如下问题:

如何把gef的内容导出为图片,本质是如何把figure绘制到需要的地方,而不是默认的FigureCanvas.

---实现代码

实现分成了2部分

1)导出的action,即代码主体

2)提炼的工具方法

 

*工具方法ImageUtil

ImageUtil源码

注意IMAGE_GIF由于色深8位,高位到低位的保存会失败.如何保存为GIF格式,可以研究下.

 

*导出action

Action源码

说明,

1)很多RootEditPart,如FreeformGraphicalRootEditPart,在注册时使用LayerManager.ID为key.

2)GEF中Figure分层的原理,简单说,就是把不同的图形如连线,移动时的阴影图形等等放在不同的层上,这些层也是Figure,注册在RootEditPart中.

所以看看RootEditPart的几个实现类源码,就会明白了.

 

*总结

---把GraphicalViewer编辑器导出到图片的原理,就是定义一个Image的GC,并传给Figure的paint()方法.

---上面例子还需要优化,如导出图片时把图片内容绘制在合适的大小,就是说可能编辑器的边界会大于图形的边界

---org.eclipse.gef.ui.actions.PrintAction,对于绘制可以参考下它的实现.

posted on 2011-08-31 22:07  戴忠  阅读(422)  评论(0编辑  收藏  举报