在一个GEF的编辑器中,编辑器上是一个个的Figure,从外观上看,其实也是一张张的图片。那么如果能实现一个功能,把任意选择的几个Figure,能粘贴到例如Windows的画图工具,或者是Word里,直接就变成一张图片,那是多美的一件事啊。如下所示:


直接把GEFEditor中的任意选中图元作为图片复制出来。我们就需要做一些事情,我一开始的思路是把一个个图元作为一个图片来对待,然后粘贴的时候把选中图元的图片复制出来。不过这样碰到的一个问题就是:上下层相叠加的图片显示的叠加效果可能刚好相反。
后面就改了一下,把整个Editor的GraphicalViewer区域做为一个图片来处理,当进行粘贴的时候,把所以选中对象的位置和大小记录下来。这个就简单多了。这就是一般的思路。
具体怎么转变成一个图片呢?如果自己写过自定义的Figure就会知道,每个Figure都是通过一堆的paint*()方法来实现的,其中最顶层的就是paint(Graphics)方法。所以要想得到这个图元对象的图片就不难了,我们只要定义一个Image对象,利用这个对象,构造出一个Graphics对象,然后在这个对象上调用paint(Graphics)方法就成了。
得到了GraphicalViewer对象的图片对,那些选中对象的位置和大小信息就有用了。只要把相应的这些信息区域的图形信息取出来,一堆分离的图形就完成了,最后再合成一下,就OK了。
具体实现,大家可以自己试试!

- 大小: 19.1 KB

- 大小: 22.9 KB
分享到:
相关推荐
实现拷贝粘贴功能在GEF中涉及到以下几个关键步骤: 1. **定义CopyCommand和PasteCommand**:你需要创建自定义的CopyCommand和PasteCommand类,继承自GEF提供的基础命令类,如DirectEditCommand或EditCommand。这些...
本文将深入探讨如何在GEF中实现属性视图,并通过一个处理器(Processor)模型的例子来阐述具体步骤。 1. **属性视图的概述** - 属性视图用于展示图形模型的相关属性,如处理器的温度、IP地址和类型等。 - 当图形...
这两篇文章可能分别由CSDN博主和博客园博主分享了他们在使用GEF和相关技术,如Draw2D(用于在GEF中绘制2D图形的库)时的经验和技巧。 在深入理解GEF时,我们需要关注以下几个核心概念: 1. **模型-视图-控制器(MVC...
在gef中,转折线的实现涉及到PathFigure和Segment类的使用。PathFigure用于定义一个图形的轮廓,而Segment则代表了轮廓中的一段线段。通过添加和调整Segment实例,我们可以构建出具有转折点的线条。 实现gef转折线...
在本教程中,我们将深入探讨GEF的基本概念、设计原则以及如何使用它来开发自己的图形编辑器。 **1. GEF简介** GEF的设计目标是将图形编辑器的实现细节抽象化,让开发者能够专注于业务逻辑和模型设计,而不是底层的...
在GEF中,模型通常由`EObject`和`EObjectImpl`实现,可以使用EMF(Eclipse Modeling Framework)来生成。 2. **视图(View)**: 视图是模型的可视化表示,将模型数据呈现给用户。GEF中的视图由`GraphicalViewer`类...
这个模式在 GEF 中应用非常广泛,学习 GEF 的过程中需要深入了解 Command 模式的实现原理和应用。 GEF 的结构决定了 GEF 应用程序的复杂性,即使最简单的 GEF 程序也包含五六个包和十几个类。因此,学习 GEF 需要从...
4. **命令(Command)**:GEF中的命令模式用于封装对模型的修改操作,使得撤销/重做功能得以实现。命令对象记录了更改前后的状态,便于执行回滚或重复操作。 5. **图元(Figure)**和**绘图(Drawing)**:GEF通过SWT...
"GEF_Tutorial.pdf"很可能是GEF的基础教程,涵盖了GEF的基本概念、架构和使用方法,包括图元的创建、连接线的绘制、交互操作的实现等。用户可以通过阅读这个教程来了解如何在Eclipse环境中搭建GEF项目,并进行基本的...
这个项目旨在演示如何利用GEF进行图形界面开发,并且特别关注了通过适配器(Adapter)扩展点来实现属性页配置以及在非Editor的ViewPart中使用GEF。 GEF是Eclipse平台下的一个开源库,专门用于构建可自定义的、图形...
本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF的基础概念和实现方法。 GEF的核心功能是提供了一套强大的组件和API,用于创建可交互的、图形式的用户界面。通过使用GEF,开发者可以轻松地创建出具有拖放...
此外,理解MVC(模型-视图-控制器)模式和MVC在GEF中的应用对于提升开发效率至关重要。 总之,通过这个"GEF入门实例代码2",开发者可以了解到如何在Eclipse中构建一个基于GEF的图形编辑器,这不仅涉及数据模型的...
在GEF中,模型需具备变化通知机制,以便于及时更新控制器和视图。通常,模型的设计应紧密贴合业务逻辑,以确保数据的准确性和完整性。 2. **控制器(Control)**:控制器,即EditPart,是GEF的核心部件,负责处理模型...
- **Draw2D**: 版本3.1.0或以上,通常包含在GEF中 - **EMF**: 版本2.1.0或以上 ### 创建RCP项目 1. **初始化项目**: - 打开Eclipse并选择“File” > “New” > “Other” > “Plug-in Project”。 - 为项目命名`...
在GEF中,模型是数据结构的抽象,用于存储和管理图形化编辑器所显示的信息。开发者需要定义自己的模型类,这些类通常继承自GEF提供的基础类,如`org.eclipse.gef.mvc.models.Model`。模型类中的属性和方法反映了图形...
综上所述,基于GEF框架的SVG制作工具设计与实现为解决SVG源码编辑的低效问题提供了一种有效途径。通过集成多个关键组件,这款工具能够显著提升SVG文件的创作效率,并为设计师提供更加友好和高效的工作环境。此外,...
在GEF中,锚点的定位直接影响到连接线的形状和行为,特别是当用户通过鼠标进行交互时。"GEF锚点鼠标定位"这个主题主要探讨的是如何使锚点跟随鼠标移动,从而提供更加灵活和直观的用户操作体验。 1. **GEF框架基础**...
本篇文章将深入探讨GEF中的图形移动与缩放功能的实现。 首先,GEF的核心在于其事件处理机制。当用户在图形视图上执行操作(如点击、拖动等)时,SWT事件会被转换为请求(request),这些请求随后被发送到Controller...
- **Draw2D 版本**:3.1.0及以上(包含在GEF中) - **EMF 版本**:2.1.0及以上 #### 二、RCP项目建立与配置 - **建立RCP项目**: - **步骤**: 1. **选择项目类型**:选择“Plug-in Project”。 2. **项目名称...
**GEF(Graphical Editing Framework)** 是一个用于构建图形编辑工具的开源框架,它为开发人员提供了一套全面的库和工具,用于创建基于Eclipse的富客户端平台(RCP)的应用程序,特别是那些涉及图形用户界面(GUI)...