设计思路如下:将一个gef图元转换为一个图片(createImage()方法是实际在内存里作画并转换为可写入为文件的二进制流),然后将图片转换为ImageData对象,通过系统的ImageTransfer转换器转换:
A.将gef图元转换为图片:
/**
* 将一个元件装换为一个图片的信息资源
* 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
*/
privatebyte[] createImage(IFigure figure, int format) {
IWorkbenchPart activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
Device device =activePage.getTitleImage().getDevice();
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();
}
关于粘贴复制:
参考见文本复制倒粘贴板:
publicvoid copyToClipboard() {
if (text == null) {
return;
}
Clipboard clipboard = null;
try {
clipboard = new Clipboard(text.getShell().getDisplay());
String contents = text.getSelectionText();
if (contents.length() == 0)
contents = text.getText();
clipboard.setContents(new Object[] { contents },
new Transfer[] { TextTransfer.getInstance() });
} finally {
if (clipboard != null) {
clipboard.dispose();
}
}
}
获取粘贴板中的数据:
Object getClipboardContent(int clipboardType) {
TextTransfer plainTextTransfer = TextTransfer.getInstance();
returnclipboard.getContents(plainTextTransfer, clipboardType);
}
相关推荐
标题“GEF实现拷贝粘贴”涉及到的是在软件开发中使用Graphical Editing Framework(GEF)进行图形界面编辑时,如何实现复制和粘贴功能的技术。GEF是Eclipse平台下用于构建图形化编辑器的框架,它提供了一套完整的...
它提供了一套完整的架构和库,使得开发者能够快速、灵活地创建出复杂的图形用户界面,特别适合于开发流程图、网络拓扑图、UML模型等图形化应用程序。 **主要组件与概念** 1. **DirectEdit**: GEF中的DirectEdit...
通过学习GEF,开发者可以构建出强大的图形化工具,例如数据库设计工具、流程图编辑器、网络拓扑图等。PPT文件则可能包含更详尽的理论讲解和案例分析,帮助深入理解GEF的工作机制。程序源码则提供实践指导,让开发者...
标题“GEF典型实现例子”指的是使用Graphical Editing Framework (GEF)的示例应用。GEF是Eclipse平台下的一个开源项目,主要用于构建图形化编辑工具,它提供了丰富的图形用户界面(GUI)组件和框架,帮助开发者创建...
GEF支持创建各种图形用户界面,包括绘图工具、流程图和模型编辑器。 GEF的主要组件包括: 1. **Model**:模型是数据结构,包含了图形元素的信息。它可以是简单的数据结构,也可以是复杂的领域模型。 2. **Edit ...
在本篇文章中,我们将深入探讨gef转折线的相关方法实现以及GEF的API。 首先,让我们理解一下什么是转折线。在图形编辑中,转折线通常指的是具有多个折点的线条,这些折点可以由用户交互式地调整,以改变线条的形状...
在实现流程图工具时,通常需要将流程图的结构和状态序列化,以便于保存和加载。这可能涉及到XML序列化或者JSON格式的转换。 9. **集成到应用程序**: Draw2d可以轻松地与其他Java GUI库(如Swing或SWT)集成,...
**GEF(Graphical Editing Framework)深度解析** GEF,全称为Graphical Editing Framework,是Eclipse平台下用于构建图形编辑器的...通过深入理解GEF的原理和实践,开发者可以更高效地构建出功能丰富的图形编辑应用。
在GEF(Graphical Editing Framework)中,理解其工作流程对于开发图形编辑工具至关重要。GEF主要用于构建基于SWT和JFace的图形用户界面,它提供了丰富的功能来处理图形元素的绘制、操作和交互。本篇文章将深入探讨...
开发者可以通过实现GEF提供的接口和回调方法,轻松地定制自己的图形编辑器,用于创建流程图、网络拓扑图、UML模型等各种图形表示。 本入门系列将涵盖以下几个主要知识点: 1. **EMF基础**:首先会讲解EMF的核心...
GEF主要应用于领域包括模型驱动工程(MDE)、软件建模、流程图和系统设计等。 标题"GEF Example Source Code"表明这是一个关于GEF框架的示例源代码集合,它可能包含各种演示如何使用GEF构建图形编辑功能的代码实例...
流程图通常用于表示程序或工作流的步骤,这部分例子将涵盖节点(任务或决策点)、连接线(表示步骤间的转移)以及各种操作,如添加、删除、移动节点,以及调整连接线。开发者可以通过这个示例学习到如何构建可执行的...
本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF的基础概念和实现方法。 GEF的核心功能是提供了一套强大的组件和API,用于创建可交互的、图形式的用户界面。通过使用GEF,开发者可以轻松地创建出具有拖放...
通过阅读和调试DEMO源码,可以理解GEF的各个组件如何协同工作,以及如何扩展和定制自己的图形编辑工具。 **5. 进阶应用** - **Zest图渲染**: 结合Zest库,可以创建更丰富的图表类型,如树图、网络图。 - **自定义...
GEF支持多种交互操作,如拖放、选择、复制、粘贴、撤销/重做等。这些功能可以通过实现特定的适配器和命令来添加到你的编辑器中。 **8. 示例项目** "emf&gef.pdf"和"GEF_Tutorial.pdf"这两份文档很可能包含了详细的...
这个入门学习例子旨在帮助初学者理解GEF的基本用法和核心概念,通过实例展示如何利用GEF实现工具栏、菜单栏、属性栏以及图形的交互功能,如移动、删除、撤销、连线等,并涵盖了大纲视图和鹰眼功能的实现。...
这两个组件常被用于创建复杂的图形用户界面,特别是那些需要图形编辑功能的应用,如流程图、网络拓扑图等。 GEF提供了模型-视图-控制器(MVC)架构,使得开发者能够轻松地创建和操作图形元素。它的核心功能包括图形...
- **Step 1-3**:基础概念和环境设置,讲解如何创建第一个GEF编辑器,包括模型定义、EditPart实现以及与Eclipse IDE的集成。 - **Step 4-5**:深入探讨模型-视图映射,包括图形元素的布局和连接线的绘制。 - **Step ...
描述进一步说明了这个包中包含的具体内容,如“GEF_Tutorial”、“GEF实例”、“入门教程”以及“GEF-whole-upload”,这些都暗示了这是一个全面的学习资源,旨在帮助用户从基础到实践全方位掌握GEF。 GEF,全称为...
### 基于GEF框架的SVG制作工具设计与实现 #### 摘要与引言 本文聚焦于探讨一种新型SVG(可缩放矢量图形)制作工具的设计与实现,该工具基于Eclipse平台的GEF(Graphic Editor Framework)框架。SVG作为一种基于XML...