GMF中,如何不打开editor保存图片
2012-05-14 22:00
169 查看
之前的博客介绍了将当前editor保存为图片的方法。但由于项目里的需求有变,需要在不打开editor的情况下,通过图文件保存图片。由于保存图片的操作必须获得diagram的editpart才能保存,而目前已知的获取editpart的方法只有先打开editor才能获得。那还有其他办法吗?
答案是有的。GMF保存图片对应CopyToImageUtil这个类,这个类里有个方法:
不打开editor保存图片的具体实现如下:
ResourceSet resourceSet = new ResourceSetImpl();
TransactionalEditingDomain.Factory.INSTANCE
.createEditingDomain(resourceSet); // 创建编辑域
URI uri= URI.createFileURI(pathString); // 通过源文件路径创建一个URI
Resource resource = resourceSet.getResource(uri, true); // 通过URI获得对应的资源(内存模型)
Diagram diagram = null;
// 通过resource获取Diagram
for (Object resElt : resource.getContents()) {
if (resElt instanceof Diagram) {
diagram = (Diagram) resElt;
break;
}
}
CopyToImageUtil copyToImageUtil = new CopyToImageUtil();
IPath ipath = new Path("D:\\1.jpg"); // 目标路径
ImageFileFormat imageFormat = ImageFileFormat.resolveImageFormat(3); // 我这里选择的图片格式为jpg
if (diagram != null) {
// 通过diagram保存图片
copyToImageUtil.copyToImage(diagram, ipath,
imageFormat, new NullProgressMonitor(),
XXXDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
}
分析:其实我们在给copyToImage()方法传入diagram的时候,这个方法会先搜索是否存在对应的editor,若存在,则通过这个editor获得diagram的editpart;若不存在,则会根据传入的Diagram,创建对应的editpart(OffscreenEditPartFactory这个类的public DiagramEditPart createDiagramEditPart(Diagram diagram,Shell shell, PreferencesHint preferencesHint方法)。
本质还是通过设法获得EditPart来保存图片。这就是为什么通过传入Diagram能保存图片的原因。
答案是有的。GMF保存图片对应CopyToImageUtil这个类,这个类里有个方法:
copyToImage(Diagram diagram, IPath destination, ImageFileFormat format,IProgressMonitor monitor, PreferencesHint preferencesHint),我们可以给这个方法传入Diagram。之后便能通过Diagram保存图片了。
不打开editor保存图片的具体实现如下:
ResourceSet resourceSet = new ResourceSetImpl();
TransactionalEditingDomain.Factory.INSTANCE
.createEditingDomain(resourceSet); // 创建编辑域
URI uri= URI.createFileURI(pathString); // 通过源文件路径创建一个URI
Resource resource = resourceSet.getResource(uri, true); // 通过URI获得对应的资源(内存模型)
Diagram diagram = null;
// 通过resource获取Diagram
for (Object resElt : resource.getContents()) {
if (resElt instanceof Diagram) {
diagram = (Diagram) resElt;
break;
}
}
CopyToImageUtil copyToImageUtil = new CopyToImageUtil();
IPath ipath = new Path("D:\\1.jpg"); // 目标路径
ImageFileFormat imageFormat = ImageFileFormat.resolveImageFormat(3); // 我这里选择的图片格式为jpg
if (diagram != null) {
// 通过diagram保存图片
copyToImageUtil.copyToImage(diagram, ipath,
imageFormat, new NullProgressMonitor(),
XXXDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
}
分析:其实我们在给copyToImage()方法传入diagram的时候,这个方法会先搜索是否存在对应的editor,若存在,则通过这个editor获得diagram的editpart;若不存在,则会根据传入的Diagram,创建对应的editpart(OffscreenEditPartFactory这个类的public DiagramEditPart createDiagramEditPart(Diagram diagram,Shell shell, PreferencesHint preferencesHint方法)。
本质还是通过设法获得EditPart来保存图片。这就是为什么通过传入Diagram能保存图片的原因。
相关文章推荐
- GMF中,如何不打开editor保存图片
- GMF:如何在不打开Editor的情况下生成图片
- GMF:如何在不打开Editor的情况下生成图片
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- GMF中,如何不打开editor得到此editor的模型对象
- GMF中,如何不打开editor得到此editor的模型对象
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- 5.27 按步就搬 Editor如何保存和打开文件
- 如何用 java swing打开或者保存文件
- 如何在xcode simulator保存完整的横屏图片
- iOS 打开相册,保存图片到相册,打开相机
- iphone Documents文件中保存的图片如何读取并显示?
- Metro style app 图片Scale ,Crop. 图片的打开,保存
- Matlab中如何把m文件默认打开方式设成editor
- 如何将Canvas中内容保存为图片
- 如何将图片保存至自定义分组
- 如何将图片保存至自定义分组
- Java中如何根据图片文件创建Image对象,且将Image对象保存为文件形式
- chrome extension 如何保存图片到本地
- Imwrite函数如何无损保存图片。