声明:此文章参考自八进制在博客园发表的"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();
}
分享到:
相关推荐
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提供了其他功能,以在动态分析和漏洞利用开发...
Pwndbg + GEF + Peda-一劳永逸,一劳永逸 这是一个在单个命令中安装Pwndbg,GEF和Peda GDB插件的脚本。 运行install.sh ,然后使用以下命令之一启动相应的GDB环境: gdb-peda gdb-peda-intel gdb-peda-arm gdb-...
Xtext 的 GEF 编辑器集成示例项目将 Xtext 集成到基于 GEF 的编辑器中,为的演示而。 org.xtext.example.statemachine :所述的statemachine的Xtext语言(一个例子的Xtext语言的变型)和运行时代码(解析器,串行化...
由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。
Eclipse插件开发:GEF入门系列宝典
GEF示例 博文链接:https://xyhsm.iteye.com/blog/67809
我下的资源的打包,希望有帮助,包括:GEF_Tutorial,GEF实例,入门教程,GEF-whole-upload
GEF入门必读 GEF入门系列 GEF-whole-upload 感谢八进制
GEF小组的ppt,展示了如何将GEF应用到Web上的一些思路和做法。
这是我参考了一些其他资料,自己写的一个GEF示例程序。 在这个demo中你可以看到以下的功能...2. 将此压缩包中的eclipse project引入到你的Eclipse环境中 3. 运行这个插件 4. 看到界面后,点击 Tools -- Open GEF Editor
这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、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 绘图折线的实现方法。 gef API chm 格式
GEF eclipse 插件
GEF从入门到精通,通过非常详细的实例教程,使读者在最短时间内对GEF框架有个全面的认识,一本非常不错的GEF教程。
GEF.rar GEF.rar GEF.rar
GEF理解之第三部分,学习gef必备文档资料啊,值得下载