From:http://www.blog.edu.cn/user1/19180/archives/2005/375038.shtml3.1 概述
Draw2D是一个轻量级图形组件工具包,这些组件称为Figure。所谓轻量级系统,就是说Draw2D的组件与操作系统中的图形系统没有对应关系,Draw2D对象不过是一个普通的Java对象。Figure可以通过一种父子关系组合起来。每一个Figure都有一个边界(Bounds),它的子女必须都在这个边界中,而布局管理器用来管理子女的位置。一般来说,子女的位置会根据边界而变化,但是对于线状图元,它的边界会根据子女的位置和自己的形状发生变化。
一个轻量级系统将一个Figure和一个SWT画布(Canvas)相关联,它的EventDispatcher监听大部分SWT的事件,并将这些事件传递给相应的Figure。对于Paint消息,轻量级系统将它传递给UpdateManager,这个UpdateManager将负责重新验证Figure和它子女的位置。
3.2 Draw2D的基本概念
Draw2D是一个很有用的工具包,它借用Java AWT窗口系统的基本思想(主要是布局的概念)进行绘图,同时提供丰富的概念,用于解决绘图过程中的遇到的问题。总体来说,Draw2D就是希望将绘图自动化,这也使得Draw2D在设计各种eclipse工具中扮演着极其重要的地位。Draw2D和GEF没有绝对联系,Draw2D可以独立于GEF存在并使用,因为它只和SWT相关。
Draw2D的问题可以写很多,这里只介绍基本的概念和思想。
3.2.1 Figure Draw2D最重要一个概念就是Figure,它可以看作是所有Draw2D图元的基类,事实上所有的Draw2D图元都继承自IFigure接口。所有Draw2D图元的都是Figure,不论是块状元素还是线状元素。
Figure类是一个IFigure接口的基本实现,可以用它描述一个区域(矩形或者线形)。Shape类继承自Figure类,它的子类实现了很多基本图形的功能,这包括Ellipse、Polyline、RectangleFigure、RoundedRectangle、Triangle。Figure类的其他子类中,还有一些比较常用的(对于绘图来说),比如Label、Layer、Panel。
3.2.2 Layout LayoutManager是布局的接口,它负责定位Figure子女的位置。
XYLayout和FreeformLayout相当于绝对布局,使用这种布局的Figure,它的子女位置可以自由分布。
ToolbarLayout是工具栏布局,使用这个布局的Figure,它的子女按照水平或者垂直的方式排布。
FlowLayout是流布局,使用这个布局的Figure,它的子女首先会尽量水平排布,如果排不下了,则进行垂直排布。
Draw2D中还提供了其他的布局,这里不再一一进行介绍。关于布局的话题,以后有时间再研究。
3.2.3 Anchor和Router Anchor是用来定位连接线端点的对象。
ChopboxAnchor将锚点设为矩形的中心,连接线的端点将定位到矩形的边界上。EllipseAnchor将锚点定位到椭圆形的中心上,连接线的端点将定位到椭圆形的边界上。XYAnchor则用来描述独立的锚点。
Router用来负责计算连接线的中间点,根据不同的方案,折线的中间点将计算为不同的位置。
3.2.4 Locator Locator用来定位Figure的位置,和Anchor不同,Locator的不是处理线端,而是处理Figure。
ConnectionEndpointLocator用来描述Figure和线端的位置。
分享到:
相关推荐
Draw2D是Eclipse项目的一部分,它提供了一套丰富的API,可以方便地在 SWT 的 Composite 对象上进行绘图,减少了对第三方库的依赖。 Draw2D的核心概念包括Composite、轻量级系统和图形。Composite是SWT的基础组件,...
一、Draw2D简介 Draw2D是基于Java的图形绘制库,主要设计用于在Web应用中创建和显示2D图形。它提供了一套完整的API,支持图形的绘制、交互和动画效果,使得开发者能够轻松构建复杂的可视化界面,如流程图、网络拓扑...
在DirectX编程中,"Draw2D"通常指的是在二维空间中进行绘制操作的技术。《Programming Role Playing Games with DirectX》是一本经典的DirectX游戏开发书籍,由Jim Adams撰写。第二版的第二章深入探讨了如何在...
《Programming Role Playing Games with DirectX》第二版的 chap 2 提供了 Draw2D 和 Draw3D 的源代码,这是深入理解 DirectX 在游戏开发中的应用的关键部分。DirectX 是微软推出的一套 API(应用程序接口),主要...
### 第三章:创建`Circle2D`对象 创建`Circle2D`对象通常涉及指定圆心的X、Y坐标和半径。例如: ```java Circle2D.Float circle = new Circle2D.Float(x, y, radius); ``` ### 第四章:属性访问与修改 `Circle2D`...
17 第14章 透视图(Perspectives).pdf ... 24 第21章 Draw2d.pdf 25 第22章 GEF介绍与实现.pdf 26 第23章 插件开发实例.pdf 27 第24章 GEF实例.pdf 28 《Eclipse插件开发学习笔记》读者交流区.pdf
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...
2. **创建和初始化DirectDraw对象**:通过CoCreateInstance函数,可以创建并初始化DirectDraw的主要接口IDirectDraw,这是使用DirectDraw的第一步。 3. **设置显示模式**:使用IDirectDraw::SetDisplayMode方法,...
在本章中,我们将深入探讨使用Cocos2d-X框架进行休闲游戏开发的相关知识点,特别是通过分析提供的"第02章 休闲类游戏——Fruit & Bird"的压缩包资源。Cocos2d-X是一个开源的游戏开发框架,它基于C++,同时也支持Lua...
GTK3是GTK+的第三个主要版本,它提供了丰富的组件和布局管理器,用于构建复杂的用户界面。GTK3基于 GTK+ 2.x 进行了大量的改进,包括更好的主题支持、触摸设备兼容性和响应式设计。在C语言中,使用GTK3需要包含相关...
第三种方法是批处理渲染,也基于正交投影矩阵,但不同之处在于为所有精灵创建一个大的顶点缓冲池。这种方式通过一次性绘制多个精灵,减少了API调用次数,从而提高了渲染效率。批处理渲染尤其适用于大量精灵同时出现...
cocos2d-x本身不内置Base64解码功能,但你可以使用第三方库如`Base64++`或者自己实现解码算法。 5. **创建纹理**:解码后的二进制数据是图片的原始像素信息,需要创建`cocos2d::Texture2D`对象来承载这些数据。你...
《Cocos2d-x 3.X游戏开发实战》是由肖文吉编著的一本专业级游戏开发指南,专为想要掌握Cocos2d-x 3.X框架进行游戏开发的程序员设计。Cocos2d-x是一个开源的游戏开发框架,广泛应用于跨平台的2D游戏制作,支持iOS、...
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...
本压缩包包含三份学习资料,分别是第19章“插件开发高级内容”,第20章“富客户端平台(RCP)技术”,以及第21章“Draw2d”。 第19章“插件开发高级内容”深入探讨了Eclipse插件开发的进阶话题。这部分内容可能包括...
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...
初始化DirectDraw对象是使用DirectDraw进行图形处理的第一步。这一过程主要包括以下几个步骤: 1. **创建DirectDraw对象**: - 使用`DirectDrawCreate`函数创建一个DirectDraw对象实例。 - 该函数接受三个参数:...
第三篇主要讲述插件开发的高级内容,包括开发高级内容、富客户端平台技术(RCP)、Draw2d,以及GEF介绍与实现等4个章节;第四篇则围绕插件开发和GEF应用两个主题,精心设计了两个程序开发实例,使读者能更加全面地...
总之,"Draw画图程序,用java完成的"是一个基于Java的图形绘制应用,具备强大的功能和良好的用户体验,利用Java的GUI组件和图形2D API实现。JaxoDraw-2.0-1可能是这个程序的一个具体版本,提供跨平台的矢量图形编辑...
7. **第21章:Draw2d** - Draw2d是Eclipse几何图形库,用于在RCP应用中创建和操作2D图形。这一章可能讲解了如何使用Draw2d创建复杂的图形界面和交互式图表。 8. **第22章:GEF介绍与实现** - Graphical Editing ...