GMF:如何在不打开Editor的情况下生成图片
2019-08-02 19:31
260 查看
原文链接:https://www.geek-share.com/detail/2588920220.html
问题
GMF应用中,有时我们希望在不打开*DiagramEditor的情况下,从文件就能生成它的图片
解决方案
首先,从文件中构造DiagramImpl实例:
TransactionalEditingDomain domain = GMFEditingDomainFactory.getInstance().createEditingDomain(); IFile pageFile = project.getFile("/diagram/file/path"); DiagramImpl diagramImpl = DiagramModelLoader.getDiagramFromFile(pageFile, domain);
然后调用CopyToImageUtil的copyToImageByteArray方法,生成图片的buffer。
try { CopyToImageUtil copyToImageUtil = new CopyToImageUtil(); byte[] buffer = copyToImageUtil.copyToImageByteArray(diagramImpl, 800, 800, ImageFileFormat.PNG, new NullProgressMonitor(),PreferencesHint.USE_DEFAULTS, true); return buffer; } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; }
copyToImageByteArray会先检查该diagramImpl对应的Editor是否已经打开,如果已经打开,则从Editor中生成图片;否则,它会在一个独立的shell中生成一个Editor,然后从它生成图片,这都是在后台进行的。 但它有个问题,或者说是bug:如果已经打开的Editor和diagramImpl对应的文件并不相同,它也会认为Editor已经打开了,那么,生成的图片就牛头不对马嘴了。解决办法是把以上代码改为:
Shell shell = new Shell(); try { CopyToImageUtil copyToImageUtil = new CopyToImageUtil(); DiagramEditPart diagramEditPart = copyToImageUtil.createDiagramEditPart(pageDescriptor.getDiagram(),shell, PreferencesHint.USE_DEFAULTS); Assert.isNotNull(diagramEditPart); return copyToImageUtil.copyToImageByteArray(diagramEditPart, null, 800, 800, ImageFileFormat.PNG, new NullProgressMonitor(), true); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } finally { shell.dispose(); }
其实以上代码参考了copyToImageByteArray的实现
Binhua Liu原创,写于2013/8/31。
转载于:https://www.cnblogs.com/Binhua-Liu/p/3292984.html
相关文章推荐
- GMF:如何在不打开Editor的情况下生成图片
- GMF:如何在不打开Editor的情况下生成图片
- GMF中,如何不打开editor保存图片
- GMF中,如何不打开editor保存图片
- GMF中,如何不打开editor得到此editor的模型对象
- 如何修复Windows 10 Enterprise 在9月更新后图片全部由绘图板打开的情况
- win10如何设置不打开图片的情况下也能预览图片的缩略图
- GMF中,如何不打开editor得到此editor的模型对象
- H5页面打开android本地照册,当webview页面被系统回收的情况下,如何处理图片
- [pYUV]如何打开YUV/RGB图片
- asp.net 中如何得到图片的高度(height)和宽度(width)以及生成图片的缩略图 C#
- 如何在Django中输出matplotlib生成的图片
- 如何在不打开Visual Studio的情况下启动HlpViewer.exe
- 如何用php生成扭曲及旋转的验证码图片
- 请教一下单张图片如何生成深度图?
- J2EE如何生成验证码图片和点击刷新验证码
- 如何在使用itext生成pdf文档时给文档添加背景图片
- 利用Python如何生成便签图片详解
- c#WINFORM中如何为动态生成的按钮加背景图片
- jfreechar 生成图片后 如何保存在硬盘