声明:此文章参考自八进制在博客园发表的"GEF常见问题8:导出到图片 "一文,原文地址为:http://bjzhanghao.cnblogs.com/category/36197.html。
本人较懒,且相关知识八进制前辈的文中已有说明,不再累赘,直接贴代码:
public void run() {
FileDialog dialog = new FileDialog(Display.getDefault().getActiveShell(), SWT.SAVE);
dialog.setFilterNames(new String[] { "PNG(*.png)" });
dialog.setFilterExtensions(new String[] { "*.png", "*.*" });
String fileName = dialog.open();
// 根据指定文件和图片类型输出图片
exportDiagramAsImage(fileName, SWT.IMAGE_PNG);
}
/**
* 根据指定文件和图片类型输出图片
* @param fileName
* @param type
*/
private void exportDiagramAsImage(String fileName, int type) {
IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if(editor instanceof GraphicalEditPart){
GraphicalViewer graphicalViewer =(GraphicalViewer)editor.getAdapter(GraphicalViewer.class);;
if(graphicalViewer.getRootEditPart() instanceof ScalableFreeformRootEditPart){
ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart)graphicalViewer.getRootEditPart();
IFigure figure = rootEditPart.getLayer(ScalableFreeformRootEditPart.PRINTABLE_LAYERS);
byte[] data = createImage(figure, type);
try {
FileOutputStream fos = new FileOutputStream(fileName);
fos.write(data);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private byte[] createImage(IFigure figure, int format) {
Rectangle rectangle = figure.getBounds();
ByteArrayOutputStream result = new ByteArrayOutputStream();
Image image = null;
GC gc = null;
Graphics graphics = null;
try {
image = new Image(null, rectangle.width, rectangle.height);
gc = new GC(image);
graphics = new SWTGraphics(gc);
graphics.translate(rectangle.x * -1, rectangle.y * -1);
figure.paint(graphics);
ImageLoader imageLoader = new ImageLoader();
imageLoader.data = new ImageData[] { image.getImageData() };
imageLoader.save(result, format);
} finally {
if (graphics != null) {
graphics.dispose();
}
if (gc != null) {
gc.dispose();
}
if (image != null) {
image.dispose();
}
}
return result.toByteArray();
}
分享到:
相关推荐
Pwndbg + GEF + Peda-一劳永逸,一劳永逸 这是一个在单个命令中安装Pwndbg,GEF和Peda GDB插件的脚本。 运行install.sh ,然后使用以下命令之一启动相应的GDB环境: gdb-peda gdb-peda-intel gdb-peda-arm gdb-...
Eclipse图形编辑框架(GEF) Eclipse提供了Eclipse集成的最终用户工具,包括创作( )和词云渲染环境()以及框架组件( , , , , , , , 和 )来创建基于Eclipse集成或独立的丰富的基于JavaFX和SWT的图形化...
GEF: Graphical Editing Framework <br>GEF是一套MVC Framework,它能帮你比较容易的建立图形化的编辑器,V(View)的部分常常是基于SWT的Draw2D,因此Draw2D也看作是GEF的一部分。依赖:org.eclipse.gef***, org...
GEF (发音为ʤɛf-“ Jeff”)是用于x86 / 64,ARM,MIPS,PowerPC和SPARC的一组命令,可在使用老式GDB时帮助漏洞利用开发人员和逆向工程师。 它使用Python API向GDB提供了其他功能,以在动态分析和漏洞利用开发...
Eclipse插件开发:GEF入门系列宝典 GEF(Graphical Editor Framework)是一种流行的图形化编辑框架,主要应用于提供图形化编辑模型的功能,以提升用户体验。该框架广泛应用于图形化的流程设计器、UML 类图编辑器等...
由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。
Xtext 的 GEF 编辑器集成示例项目将 Xtext 集成到基于 GEF 的编辑器中,为的演示而。 org.xtext.example.statemachine :所述的statemachine的Xtext语言(一个例子的Xtext语言的变型)和运行时代码(解析器,串行化...
9. **导出和导入**:讨论如何将图形数据序列化和反序列化,以便保存和加载编辑状态。 10. **调试与测试**:提供调试GEF应用程序的方法和技巧,以及如何进行单元测试和集成测试。 通过深入学习这些内容,开发者能够...
描述进一步说明了这个包中包含的具体内容,如“GEF_Tutorial”、“GEF实例”、“入门教程”以及“GEF-whole-upload”,这些都暗示了这是一个全面的学习资源,旨在帮助用户从基础到实践全方位掌握GEF。 GEF,全称为...
- GEF:3.1.0及以上版本 - Draw2D(包含在GEF中):3.1.0及以上版本 - EMF:2.1.0及以上版本 #### 二、RCP项目建立与GEF集成 **知识点3:RCP项目建立** - **步骤**: 1. 新建一个Plug-in Project。 2. 设置...
- `org.eclipse.gef.EditPart`:这是GEF的核心组件,它代表了图形模型中的一个元素,并负责将其映射到视图中。 - `org.eclipse.gef.GraphicalEditPart`:是EditPart的一个子类,专门处理图形元素的绘制和交互。 - `...
在Eclipse环境中使用GEF:** Eclipse是一个强大的集成开发环境(IDE),支持多种语言和插件。在Eclipse中,你可以利用其插件开发框架PDE(Plugin Development Environment)来开发GEF编辑器。首先,你需要导入GEF库...
标题“将GEF应用到Web上,PPT”表明这是一个关于如何在Web环境中使用GEF(图形编辑框架)技术的演示文稿。GEF,全称Graphical Editing Framework,是Eclipse基金会的一个开源项目,主要用于构建图形用户界面(GUI)...
2. 安装与配置Gef: 在开始使用Gef之前,你需要在你的系统上安装GDB。然后,可以通过在GDB的初始化文件(通常是~/.gdbinit)中添加适当的命令行来安装Gef。安装过程简单明了,资料中会详细讲解每一步骤。 3. Gef...
GEF编辑器通常基于`AbstractGraphicalEditor`类,可以集成到Eclipse IDE中。 4. **指挥者(Commander)**: 指挥者处理用户操作,如工具栏点击或键盘输入,将这些操作转化为模型的更改。GEF的命令框架(Command ...
6. **事件处理与反向工程**:GEF可以捕获用户对图形的操作,并将这些操作转化为代码,反之亦然,支持模型到视图的同步。 **Eclipse** 是一个高度可扩展的开放源码IDE,最初为Java开发而设计,但现在支持多种语言和...
3. **EditPart实现**:为了将模型数据映射到图形视图,你需要创建自定义的EditPart类。这里可能有一个代表“Hello”文本的EditPart。 4. **绘图和布局**:源码中会有绘制图形元素和设置布局的代码,比如在画布上...
《GEF-SDK-3.6.2 jar:Eclipse GEF框架详解及在Android ADT中的应用》 GEF(Graphical Editing Framework)是Eclipse项目中的一个重要组成部分,它为开发图形化编辑器提供了强大的支持。在标题“GEF-SDK-3.6.2 jar...
通过这个深入的教程,参与者不仅可以学习到GEF的基本用法,还能了解如何在实际项目中规划和应用GEF,从而提升开发高效图形编辑工具的能力。无论是新手还是有一定经验的开发者,都能从中受益。如果你有关于GEF的计划...