`
tjlvan
  • 浏览: 22597 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在不打开GEF编辑器的情况下,将Editor导出为图片

gef 
阅读更多

从一个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);
// 调用导出图片的接口
...

 

分享到:
评论

相关推荐

    Eclipse HTML Editor GEF安装

    GEF 是 Eclipse 平台上用于创建图形化编辑器的框架,它使得开发者能够方便地构建复杂的图形界面。 首先,我们来详细了解如何安装这两个组件: 1. **安装 GEF 插件**: - 访问 GEF 的下载页面:...

    GEF简易教程-学习GEF的入门教程

    总之,通过本教程的学习,你将掌握GEF的基本使用方法,学会如何在RCP项目中构建图形编辑器,并理解Editor与View的差异。继续探索GEF的高级特性,将有助于你开发出更加复杂且功能丰富的图形化应用程序。

    eclipse插件开发之GEF编辑器

    对gef中相关内容的描述,这里面我只是个人的理解,描述gef的最基本的功能,若需深入研究,可以从网上查询更多资料,我个人也在继续研究中。

    Eclipse插件开发:GEF入门系列宝典_gef_

    由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。

    GEF快速入门教程和EMF教程

    通常情况下,GEF会集成到Editor中而非View中,这是因为Editor提供了文件保存机制,这对于图形编辑来说非常关键。 1. **创建Editor**: - 在`plugin.xml`的“extensions”页面中,添加一个新的编辑器。选择`org....

    自己下的GEF资源打包

    GEF,全称为Graph Editor Framework,是Eclipse平台下用于构建图形编辑器的一个开源框架。它提供了一套强大的工具和API,使得开发者能够快速、便捷地创建出复杂的图形用户界面,特别适合于创建数据建模、流程设计、...

    visual editor gef 3.6

    "Visual Editor GEF 3.6" 是一个针对Eclipse集成开发环境(IDE)的插件,主要用于图形化地构建和编辑应用程序。GEF(Graphical Editing Framework)是Eclipse平台的一部分,它提供了一个框架,使得开发者能够创建...

    GEF资源文件

    GEF(Graphical Editor Framework)是Eclipse开发平台中的一个核心组件,主要用于构建图形化编辑器。它为开发者提供了一套完整的框架,使得开发者能够快速、方便地创建出复杂的图形用户界面,特别是针对那些需要进行...

    GEF_Demo_Code20170307

    2. **在ViewPart中使用GEF**:通常情况下,GEF主要用于创建图形编辑器(Editor),但本示例特别指出在非Editor的ViewPart中使用GEF。ViewPart是Eclipse RCP(Rich Client Platform)中的一个组件,用于显示各种视图...

    GEF 入门操作

    当用户操作发生时,GEF将操作转化为请求,控制器接收请求并转发给适当的编辑策略,编辑策略则根据请求创建并执行相应的命令,命令负责对模型进行修改。模型变化后,控制器作为模型的监听器,接收到事件并更新视图,...

    eclipse下visual editor

    "Eclipse下Visual Editor"指的是一个在Eclipse平台上运行的图形化编程工具,它为开发者提供了可视化的编程界面,使得构建和设计Java应用程序变得更加直观和便捷。这款插件特别适用于那些习惯于用拖放方式创建用户...

    GEF实例教程PDF

    - **GEF (Graphical Editing Framework)**:GEF是Eclipse平台提供的一个用于构建图形编辑器的框架,能够帮助开发者快速构建功能丰富的图形用户界面。适用于创建各种类型的图形编辑器,如流程图编辑器、UML建模工具等...

    GEF初学者开发样例

    **GEF初学者开发样例详解** ...总的来说,GEF为图形编辑器的开发提供了一种标准和灵活的框架,通过"gefpractice"这样的实践项目,初学者可以逐步掌握其核心概念和实际应用,从而提升在图形界面开发领域的技能。

    Eclipse的GEF学习

    GEF,全称为Graphical Editor Framework,是Eclipse平台下的一款图形编辑框架,主要用于构建图形化编辑器,如流程设计器、UML类图编辑器等。GEF遵循经典的MVC(Model-View-Control)架构,这一设计模式使得模型、...

    GEF入门学习例子

    3. **编辑器(Editor)**: 编辑器是Eclipse插件开发中的一个关键组件,它提供了对模型的编辑功能。GEF编辑器通常基于`AbstractGraphicalEditor`类,可以集成到Eclipse IDE中。 4. **指挥者(Commander)**: 指挥者处理...

    eclipse gef ve gmf

    GEF是一个用于构建图形用户界面的框架,特别是为创建基于图的编辑器提供支持。它提供了基础的绘图功能,包括图形元素的创建、布局、选择、连接和拖放等操作。GEF允许开发者定义自己的模型,并通过模型驱动的方式来...

    GEF教程

    GEF,全称为Graphical Editor Framework,是Eclipse平台下一款强大的图形编辑框架,专为开发图形用户界面而设计。它允许开发者创建复杂的图形编辑器,如流程图编辑器、UML类图编辑器等,极大地提升了用户的交互体验...

    GEF开发指南---插件开发

    - **图形绘制**:文档虽然没有详细描述具体的图形绘制逻辑,但可以推测这部分工作是在Editor类中完成的,利用GEF提供的API来进行图形的绘制和编辑操作。 #### 七、总结 本文详细介绍了《GEF开发指南—插件开发》中...

    RCP与GEF课件,介绍RCP和GEF各组成部分和工作原理

    4. **Editor**:编辑器是用来打开和编辑文件的组件。它们可以是文本编辑器,也可以是富文本或者图形化的编辑器,如代码编辑器或模型编辑器。 5. **Command Framework**:命令框架提供了处理用户操作的能力,如菜单...

    java开发工具插件 GEF

    它为Java开发人员提供了一套全面的API和工具,使得在Eclipse集成开发环境中创建可视化编辑器变得更加简单和高效。GEF是Eclipse平台的一部分,其设计目标是促进可定制的、灵活的和可扩展的图形编辑解决方案的开发。 ...

Global site tag (gtag.js) - Google Analytics