from:http://blog.csdn.net/moneyice/archive/2007/03/08/1524371.aspx
项目需求,要把GEF模型在editor中的显示保存为一张图片,便于预览或在文档中使用。研究了GMF的代码,它使用AWT来进行图片的输出,所以在中间作了一个SWT和AWT的转换Adapter. 是一个叫做AWTGraphics的类.其实使用SWT本身就可以进行。
使用draw2D提供的SWTGraphics可以进行GEG图像的保存。本程序假定读者对GEF有一定了解。
private void saveOutlinePicture(ScrollingGraphicalViewer viewer) ...{
LayerManager layerManager = (LayerManager) viewer.getEditPartRegistry().get(LayerManager.ID);
// save image using swt
// get root figure
// 获取显示在editor中的背景层和打印层
IFigure backgroundLayer = layerManager.getLayer(LayerConstants.GRID_LAYER);
IFigure contentLayer = layerManager.getLayer(LayerConstants.PRINTABLE_LAYERS);
// create image from root figure
Image img = new Image(null, contentLayer.getSize().width, contentLayer.getSize().height);
GC gc = new GC(img);
Graphics graphics = new SWTGraphics(gc);
graphics.translate(contentLayer.getBounds().getLocation());
// 传送显示图层
backgroundLayer.paint(graphics);
contentLayer.paint(graphics);
graphics.dispose();
gc.dispose();
// save image to file
ImageLoader il = new ImageLoader();
il.data = new ImageData[] ...{ img.getImageData() };
//保存地址和保存图片的类型
il.save(“c:/test.jpg", SWT.IMAGE_JPEG);
}
分享到:
相关推荐
通过深入学习和实践,你将能够熟练地运用Gef布局显示,提升你的Linux程序调试技能。同时,了解Gef的源码和扩展机制,还可以为今后开发自己的GDB插件打下基础。记住,不断探索和实践是成为熟练掌握Gef布局显示的关键...
视图可以有多个,每个显示模型的不同方面。 3. **编辑器(Editor)**:编辑器是视图和模型之间的桥梁,处理用户交互,如拖拽、选择、修改等,并更新模型。 4. **控制器(Controller)**:处理用户的输入事件,确保...
用视图显示在GEF编辑器编辑好的图形 在视图里加入GraphicalViewer viewer = new ScrollingGraphicalViewer(); viewer.createControl(parent);
在GEF中,适配器通常用于将模型对象转换为视图对象。 7. **手势(Gesture)**: 手势是用户与图形元素交互的方式,如鼠标点击、拖拽等。GEF通过`CommandStack`和`DirectEditManager`来处理这些手势。 **例子中的关键...
3. **模型-视图-控制器(MVC)模式**:理解GEF如何遵循MVC设计模式,模型如何驱动视图的变化。 4. **定时器或事件驱动**:如何使用Java的定时器或事件监听器来控制动画的时间序列。 5. **图形变换**:如何应用矩阵...
9. **导出和导入**:讨论如何将图形数据序列化和反序列化,以便保存和加载编辑状态。 10. **调试与测试**:提供调试GEF应用程序的方法和技巧,以及如何进行单元测试和集成测试。 通过深入学习这些内容,开发者能够...
虽然两者都可以用来显示GEF图形,但**Editor**与**View**存在本质区别: - **Editor**提供文件保存功能,适用于需要持久化数据的场景。 - **View**主要用于展示数据,不涉及数据保存,适用于动态数据展示或监控界面...
3. **GraphicalViewer**:作为图形视图的容器,负责显示模型数据。 4. **Figure**:表示图形元素,如矩形、圆形等。 5. **ConnectionFigure**:用于绘制和管理连接线。 6. **EditPolicy**:定义特定编辑行为,如选择...
通过将复杂的编辑操作抽象为请求(Request)、角色(Role)、策略(EditPolicy)和命令(Command),GEF提供了一套灵活且强大的机制,让开发者可以专注于业务逻辑,而不必担心图形界面的具体实现细节。 #### 五、GEF在实际...
在本教程中,我们将深入理解GEF的基本概念,并通过提供的"gef入门.pdf"文档和"test.gef.hello"源码,一步步学习如何构建一个简单的Hello World应用。 首先,让我们来看看"gef入门.pdf"文档中的关键知识点: 1. **...
在本实例中,我们将探讨如何利用GEF实现一个简单的MVC(Model-View-Controller)架构,这是一种常见的软件设计模式,用于分离应用程序的数据、显示逻辑和用户交互。 1. **GEF框架基础**: - **模型(Model)**:...
本文将详细介绍如何使用Graphical Editing Framework (GEF)实现一个简单的“Hello World”示例,并结合Eclipse Modeling Framework (EMF)进行扩展。通过此教程,读者能够理解GEF的基本架构以及如何在Eclipse RCP应用...
GEF,全称为Graph Editor Framework,是Eclipse平台下用于构建图形编辑器的一个开源框架。它提供了一套强大的工具和API,使得开发者能够快速、便捷地创建出复杂的图形用户界面,特别适合于创建数据建模、流程设计、...
- **EditorPart**: 实现编辑器的入口,加载和保存模型,创建图表视图。 - **Model类**: 定义图形元素的数据结构。 - **EditPolicy**: 为EditPart提供特定的行为策略,如连接线的创建和删除。 - **Command类**: 对应...
2. **视图(View)**:视图是模型在屏幕上的表示,由GEF的图形组件(如Figure和Part)组成,用于显示模型数据。 3. **控制器(Controller)**:处理用户输入,如鼠标点击和键盘事件,协调模型和视图的更新。 4. **...
- **EditParts**:表示模型的可视化组件,它们负责将模型数据转换为屏幕上的图形。 - **Figure**:基本的绘图单元,可以是简单的形状或复杂的组合。 - **Command**:可撤销/重做的命令系统,用于封装对模型的修改...
- `org.eclipse.gef.EditPart`:这是GEF的核心组件,它代表了图形模型中的一个元素,并负责将其映射到视图中。 - `org.eclipse.gef.GraphicalEditPart`:是EditPart的一个子类,专门处理图形元素的绘制和交互。 - `...
标题中的“gef写的tree例子--模型修改为emf”指的是使用GEF(Graphical Editing Framework)框架创建的一个树形视图示例,并且这个示例的模型已经转换为使用EMF(Eclipse Modeling Framework)来管理。这涉及到两个...
3. **控制器(Controller)**:控制器处理用户交互,如鼠标点击、拖拽等,将用户的操作转化为对模型的修改,同时更新视图。 4. **编辑域(Edit Domain)**:编辑域是GEF环境中最高级别的容器,管理所有的编辑部分和...
**GEF(Graphical Editing Framework)开发指南*...总之,"GEF_Tutorial.rar"是一个宝贵的资源,它将引导你踏入GEF开发的世界,通过实例学习,你将能够熟练地创建出功能丰富的图形编辑器,实现各种复杂的图形用户界面。