`

Draw2d入门系列(一、 Hello World实现)

阅读更多
Draw2d提供了在SWT的Canvas上展现和布局的能力,GEF通过Draw2d实现GEF的视图(GEF的视图和插件的视图时完全不同的概念)。学习Draw2d是为GEF打基础
今天晚上将从如下几个方面介绍Draw2d相关技术的实现
Draw2d简介
图形(Figure)
连线(Connection)
UML关系图实现

Draw2d简介
Draw2d是基于SWT的轻量级组件系统。Draw2d的事例由SWT组件、LightweightSystem和Draw2d的figures组成。
SWT的组件式Draw2d的容器,figures是Draw2d中的图形,LightweightSystem是SWT和Draw2d的桥梁,由于时间关系,不画关系图了,请见谅

IFigure可以是图形,也可以是容器。IFigure对象中能加入其它的IFigure对象,通过IFigre的组合生成Draw2d的图形。创建Draw2d的程序步骤如下:
(1)创建SWT的Canvas组件
(2)添加LightweightSystem实现
(3)添加IFigure实例
(4)吧IFgure实例加入到LightweightSystem中。

下面是Hello World例子的源代码
package com.heming.draw2d.demo;

import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
import org.eclipse.draw2d.LightweightSystem;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 * 一个简单的Draw2d实例,由Canvas、LightweightSystem和IFigure组成
 * @author 何明
 *
 */
public class HelloWorld {

	/**
	 * 主函数
	 * @param args
	 */
	public static void main(String[] args) {
		
		//新建Shell,Shell是Canvas的子类
		Shell shell = new Shell();
		
		shell.open();
		
		shell.setText("Draw2d Hello World");
		
		//添加LightweihtSystem实例
		LightweightSystem lws = new LightweightSystem(shell);
		
		//添加IFigure实例
		IFigure label = new Label("Hello World");
		
		//把IFigure添加到LightweightSystem中
		lws.setContents(label);
		
		Display display = Display.getDefault();
		
		while(!shell.isDisposed()){
			
			if(!display.readAndDispatch()){
				
				display.sleep();
				
			}
			
		}

	}

}


3
1
分享到:
评论

相关推荐

    Cocos2d-x--珍藏版

    - **HelloWorld测试项目**:使用Windows版的HelloWorld示例,通过Visual Studio打开cocos2d-win32.vc2008.sln解决方案文件,并将HelloWorld项目设置为启动项目。按照生成->调试->启动新实例的顺序来运行HelloWorld...

    GEF中文教程(以hello world为例)

    - **Draw2D 版本**:3.1.0及以上(包含在GEF中) - **EMF 版本**:2.1.0及以上 #### 二、RCP项目建立与配置 - **建立RCP项目**: - **步骤**: 1. **选择项目类型**:选择“Plug-in Project”。 2. **项目名称...

    Libgdx document

    关键的类是`HelloWorld`,它实现了`ApplicationListener`接口。`ApplicationListener`是LibGDX的核心组件,负责处理游戏的生命周期事件,如初始化、更新、渲染和清理。以下是`HelloWorld`类的主要组成部分: 1. `...

    VC6.0写的一个简单DDraw入门程序

    在这个"hello world"程序中,作者很可能展示了如何创建DirectDraw设备,创建一个简单的表面,然后在屏幕上显示一些基本图形或文本。注释将帮助理解每个步骤的作用,这对于初学者来说是非常宝贵的资源。 学习这个...

    Agg的.NET移植Agg-Sharp.zip

    AGG 提供一系列松耦合的算法,而且其所有类均采用模板(template)进行描述,开发者可以自由地组合、改写、替换其中部分或全部算法,以满足其具体的图形操作需求。示例代码:using MatterHackers.Agg.UI; using ...

    Cocos2D Android

    通常,你会在`HelloWorld.java`或`Main.cpp`中初始化游戏场景。 4. 设计场景和层:在`Layer`类中定义游戏逻辑,然后在`Scene`类中组织这些层。 5. 添加精灵和动作:使用`Sprite`类创建游戏对象,并通过`Action`类...

    Eclipse从入门到精通

    - **高度可定制:** 插件开发者可以利用Eclipse提供的API,如Draw2D绘图功能,实现复杂图形界面的设计。 **挑战:** - **依赖性:** 插件需要Eclipse作为运行环境,用户在安装插件前必须先安装Eclipse。 - **集成度...

    GEF快速入门教程和EMF教程

    #### GEF HelloWorld 示例详解 本文将详细介绍如何使用Graphical Editing Framework (GEF)实现一个简单的“Hello World”示例,并结合Eclipse Modeling Framework (EMF)进行扩展。通过此教程,读者能够理解GEF的...

    GEF及GMF入门学习

    - 从简单的HelloWorld项目开始, 逐步熟悉GEF的基本组件和流程。 - 通过阅读官方文档和相关书籍深入理解GEF和GMF的工作原理。 - 多参考开源项目, 学习优秀的实践案例。 - **资源推荐**: - **书籍**: - "Eclipse...

    XNA入门指南全中文4章

    这一章会介绍如何安装XNA Game Studio,并通过创建一个简单的“Hello, World!”程序来启动你的XNA之旅。 第二章:图形和绘制 此章节深入探讨了XNA中的图形处理技术。你会学习如何使用XNA Framework中的...

    windows程序框架小集锦

    在Windows程序设计中,"框架"一词通常指的是一个预设的结构,它提供了..."到复杂的DirectDraw全屏框架,涵盖了从入门到进阶的多种开发技术,对于任何想深入学习Windows编程或游戏开发的人来说都是一份宝贵的学习材料。

    unity-hello-world:第一个Unity项目

    "unity-hello-world"项目是初学者入门Unity开发的典型起点,它通过创建一个简单的场景来帮助理解Unity的工作流程和基本概念。 在"unity-hello-world"项目中,我们通常会遇到以下几个关键知识点: 1. **Unity界面与...

    HelloCocos

    【HelloCocos】是一个入门级的Cocos2d-x项目,Cocos2d-x是一个开源的游戏开发框架,基于C++,广泛应用于移动游戏开发,尤其是iOS和Android平台。这个项目可能是为初学者设计的,旨在教授如何使用Cocos2d-x进行基本的...

    Libgdx专题系列 第一篇 第七节

    myFont.draw(batch, "Hello, World!", x, y); batch.end(); ``` 这里,`x`和`y`是文本的起始坐标。`draw()`方法还可以接受其他参数,如颜色、旋转、缩放和对齐方式。 在第七节中,可能还会涉及文本的格式化和高级...

    ddraw最简单的程序

    DirectDraw,作为DirectX的一部分,是微软为游戏和图形密集型应用程序提供的一种API(应用程序编程接口),用于高效地处理2D和3D图形渲染。在本文中,我们将深入探讨如何利用DirectDraw创建一个简单的“Hello, World...

    Go-termloop-基于终端的游戏引擎

    func (h *HelloWorld) Draw(screen termloop.Screen) { screen.PrintAt("Hello, World!", 10, 5) } func main() { game := termloop.Init() game.Screen().SetBgColor(termloop.ColorBlack) hello := &Hello...

    GEF学习资料整理(含GEF项目搭建、简单示例、常用功能经典实现)

    项目初始化时,需要创建一个基于插件的RCP(Rich Client Platform)项目,并在其中配置所需的依赖库,如org.eclipse.gef和org.eclipse.draw2d等。接着,定义模型类、编辑策略、图形元素以及图元工厂,最后通过扩展点...

    [HTML5.Canvas(2nd,2013.4)].Steve.Fulton.文字版.pdf

    - **示例**:“Hello World!”程序: ```javascript var canvas = document.getElementById('myCanvas'); var ctx = canvas.getContext('2d'); ctx.font = '30px Arial'; ctx.fillText('Hello World!', 10, 50...

    Advanced 3D Game Programming with DirectX 8.0

    - **“Hello World”示例**:通过一个简单的“Hello World”程序示例来展示如何创建和注册一个Windows应用程序窗口。 - **消息泵**:指明了消息处理的核心机制——消息泵(Message Pump),它是Windows应用程序的...

    Get Started with Win32and C++.pdf

    - **Windows Hello World**:简单的“Hello, World!”程序,展示如何创建一个基本的窗口。 - **BaseWindow**:一个基础窗口类,封装了窗口过程和基本的窗口管理。 - **Open Dialog Box**:使用COM实现的打开文件...

Global site tag (gtag.js) - Google Analytics