从一个IFigure导出图片调用如下接口:
/**
* Returns the bytes of an encoded image for the specified
* IFigure in the specified format.
*
* @param figure the Figure to create an image for.
* @param format one of SWT.IMAGE_BMP, SWT.IMAGE_BMP_RLE,SWT.IMAGE_GIF
* SWT.IMAGE_ICO, SWT.IMAGE_JPEG, or SWT.IMAGE_PNG
* @return the bytes of an encoded image for the specified Figure
*/
private byte[] createImage(IFigure figure, int format) {
Device device = getEditPartViewer().getControl().getDisplay();
Rectangle r = figure.getBounds();
ByteArrayOutputStream result = new ByteArrayOutputStream();
Image image = null;
GC gc = null;
Graphics g = null;
try {
image = new Image(device, r.width, r.height);
gc = new GC(image);
g = new SWTGraphics(gc);
g.translate(r.x * -1, r.y * -1);
figure.paint(g);
ImageLoader imageLoader = new ImageLoader();
imageLoader.data = new ImageData[] {image.getImageData()};
imageLoader.save(result, format);
} finally {
if (g != null) {
g.dispose();
}
if (gc != null) {
gc.dispose();
}
if (image != null) {
image.dispose();
}
}
return result.toByteArray();
}
传入的Figure一般对应到GraphicalViewer获得PRINTABLE_LAYERS(包括所有连线和图元),如何在不打开编辑器的情况下拿到IFigure这个对象呢?
Shell shell = new Shell();
// 创建画布
GraphicalViewer viewer = new ScrollingGraphicalViewer();
viewer.createControl(shell);
// 最底层的EditPart,会生成含多个图层的Figure
viewer.setRootEditPart(new ScalableFreeformRootEditPart());
// 传入EditPartFactory
viewer.setEditPartFactory(editPartfacoty);
// 传入容器模型,包含所有图元和连线
viewer.setContents(obj);
// 强制刷新,在内存里生成所有的图元和连线
viewer.flush();
// 获取打印层
LayerManager layers = (LayerManager) viewer.getEditPartRegistry().get(LayerManager.ID);
IFigure figure = layers.getLayer(LayerConstants.PRINTABLE_LAYERS);
// 调用导出图片的接口
...
分享到:
相关推荐
GEF 是 Eclipse 平台上用于创建图形化编辑器的框架,它使得开发者能够方便地构建复杂的图形界面。 首先,我们来详细了解如何安装这两个组件: 1. **安装 GEF 插件**: - 访问 GEF 的下载页面:...
总之,通过本教程的学习,你将掌握GEF的基本使用方法,学会如何在RCP项目中构建图形编辑器,并理解Editor与View的差异。继续探索GEF的高级特性,将有助于你开发出更加复杂且功能丰富的图形化应用程序。
对gef中相关内容的描述,这里面我只是个人的理解,描述gef的最基本的功能,若需深入研究,可以从网上查询更多资料,我个人也在继续研究中。
由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。
通常情况下,GEF会集成到Editor中而非View中,这是因为Editor提供了文件保存机制,这对于图形编辑来说非常关键。 1. **创建Editor**: - 在`plugin.xml`的“extensions”页面中,添加一个新的编辑器。选择`org....
GEF,全称为Graph Editor Framework,是Eclipse平台下用于构建图形编辑器的一个开源框架。它提供了一套强大的工具和API,使得开发者能够快速、便捷地创建出复杂的图形用户界面,特别适合于创建数据建模、流程设计、...
"Visual Editor GEF 3.6" 是一个针对Eclipse集成开发环境(IDE)的插件,主要用于图形化地构建和编辑应用程序。GEF(Graphical Editing Framework)是Eclipse平台的一部分,它提供了一个框架,使得开发者能够创建...
GEF(Graphical Editor Framework)是Eclipse开发平台中的一个核心组件,主要用于构建图形化编辑器。它为开发者提供了一套完整的框架,使得开发者能够快速、方便地创建出复杂的图形用户界面,特别是针对那些需要进行...
2. **在ViewPart中使用GEF**:通常情况下,GEF主要用于创建图形编辑器(Editor),但本示例特别指出在非Editor的ViewPart中使用GEF。ViewPart是Eclipse RCP(Rich Client Platform)中的一个组件,用于显示各种视图...
当用户操作发生时,GEF将操作转化为请求,控制器接收请求并转发给适当的编辑策略,编辑策略则根据请求创建并执行相应的命令,命令负责对模型进行修改。模型变化后,控制器作为模型的监听器,接收到事件并更新视图,...
"Eclipse下Visual Editor"指的是一个在Eclipse平台上运行的图形化编程工具,它为开发者提供了可视化的编程界面,使得构建和设计Java应用程序变得更加直观和便捷。这款插件特别适用于那些习惯于用拖放方式创建用户...
- **GEF (Graphical Editing Framework)**:GEF是Eclipse平台提供的一个用于构建图形编辑器的框架,能够帮助开发者快速构建功能丰富的图形用户界面。适用于创建各种类型的图形编辑器,如流程图编辑器、UML建模工具等...
**GEF初学者开发样例详解** ...总的来说,GEF为图形编辑器的开发提供了一种标准和灵活的框架,通过"gefpractice"这样的实践项目,初学者可以逐步掌握其核心概念和实际应用,从而提升在图形界面开发领域的技能。
GEF,全称为Graphical Editor Framework,是Eclipse平台下的一款图形编辑框架,主要用于构建图形化编辑器,如流程设计器、UML类图编辑器等。GEF遵循经典的MVC(Model-View-Control)架构,这一设计模式使得模型、...
3. **编辑器(Editor)**: 编辑器是Eclipse插件开发中的一个关键组件,它提供了对模型的编辑功能。GEF编辑器通常基于`AbstractGraphicalEditor`类,可以集成到Eclipse IDE中。 4. **指挥者(Commander)**: 指挥者处理...
GEF是一个用于构建图形用户界面的框架,特别是为创建基于图的编辑器提供支持。它提供了基础的绘图功能,包括图形元素的创建、布局、选择、连接和拖放等操作。GEF允许开发者定义自己的模型,并通过模型驱动的方式来...
GEF,全称为Graphical Editor Framework,是Eclipse平台下一款强大的图形编辑框架,专为开发图形用户界面而设计。它允许开发者创建复杂的图形编辑器,如流程图编辑器、UML类图编辑器等,极大地提升了用户的交互体验...
- **图形绘制**:文档虽然没有详细描述具体的图形绘制逻辑,但可以推测这部分工作是在Editor类中完成的,利用GEF提供的API来进行图形的绘制和编辑操作。 #### 七、总结 本文详细介绍了《GEF开发指南—插件开发》中...
4. **Editor**:编辑器是用来打开和编辑文件的组件。它们可以是文本编辑器,也可以是富文本或者图形化的编辑器,如代码编辑器或模型编辑器。 5. **Command Framework**:命令框架提供了处理用户操作的能力,如菜单...
它为Java开发人员提供了一套全面的API和工具,使得在Eclipse集成开发环境中创建可视化编辑器变得更加简单和高效。GEF是Eclipse平台的一部分,其设计目标是促进可定制的、灵活的和可扩展的图形编辑解决方案的开发。 ...