原文:http://dev.csdn.net/author/ioriogami/b9194278f42843f68a495c70f2fcca9d.html
1、理解Draw2d
Draw2d是SWT平台上的图形库,你可以用它定制属于自己的、不依赖于特定操作系统本地组件的上层组件;
也可以用它开发基于图形的应用程序。一般来说,基础代码编写者/GUI组件提供者们使用前一个功能,像译
者这样开发应用程序的人则使用后者更多一些。
Draw2d库依赖于SWT(不依赖JFace),提供了完整的图形应用程序开发包,使用它你几乎可以作出任意的
图形,但是除了简单的几何图形以外,任何图形都需要开发者自己手绘、或者用已有的图形进行组合;同时,
如果你想让你的图形响应各种事件(鼠标/键盘/拖拽等),也必须事事躬亲,显然自由的代价就是繁冗的代码
:(
。
本文从Draw2d的核心类及其方法讲起,然后理论结合实践,以一个flowchart(程序流程图)为例子进行实
战演习,同时会讲到拖拽(drag-and-drop,
简写作dnd),以及如何使用Connector对象连接两个图形等。
1.1、使用Draw2d基础类
Draw2d在设计结构上有些类似SWT:两者使用某些共同的类(确切说是Draw2d使用SWT的类);描绘(drawing)、
事件处理和组件的布局等机制都有相似的结构,对应如表C.1。实际上,所有的Draw2d GUI必须都放在某个
SWT
Canvas上。Draw2d和SWT的第一个区别是:在SWT中,一个Canvas用一个GC对象来提供绘图功能,但在
Draw2d中Canvas使用名为LightweightSystem的对象。
表C.1
LightweightSystem好比SWT中的Display,没有具体的形状,但是提供事件处理机制以及负责与外部环境
通信。正如它的名字,LightweightSystem不依赖于特定操作系统,这意味着你失去了SWT/Jface重量级组件
的优势,比如快速的响应和本地外观风格,但你得到的,是对自己的组件的外观与行为的完全控制。
毫无疑问,Draw2d中最重要的类是Figure,你会看到,我们讲Draw2d,大部分是在讲它的方法以及子类。
就像SWT的组件都要放到一个Shell上一样,Figure必须放到LightweightSystem上以便显示。如同SWT的Control
一样,Figure可以调整大小和位置,添加Listeners和LayoutManagers,以及设置颜色和字体。同时,一个Figure
又相当于SWT中的一个Composite,可以在其上添加其他的Figure,即作为其他Figure的容器。见图C.1。
图C.1
然而,不同于Control和Widget的是,你可以随心所欲地继承Figure。Figure的图形可以绘制(drawing)
也可以使用图片。Figure不仅可以使用单独的Listener接口,而且可以自己处理大部分事件;甚至可以发起某
些事件来唤醒GUI中的其他对象。
为了向Figure中加入图片或者进行手绘,你需要用到Graphics对象。他就像SWT中的GC一样,提供了在一个给
定区域画图的方法。Graphics类的很多方法和GC的完全一样,尤其是绘制线和几何图形、显示图片以及字体等方
面。但Graphics还提供了一个不同于GC的功能:它的对象可以在LightweightSystem中移动。这意味着当你想要
改变一个图形组件的位置时,Draw2d提供了它自己的拖拽机制来将一个Figure移动到合适的位置。
1.2、Flowchart应用实例
我们的应用实例是一个程序流程图,如图C.2所示。
图C.2
Draw2d包含很多类和功能,在此无法一一详述,所以我们将只关注最主要的东西:即前面提到的Figure及其
子类。
分享到:
相关推荐
Draw2d是一个强大的图形绘制库,常用于在Java...这个"Draw2d教程"对于想要学习或提升图形界面开发技能的人来说,无疑是一份宝贵的资源。通过系统学习,你可以掌握绘制复杂图形界面的技能,并能灵活地应用于各种项目中。
在Java编程中,Draw2D库是一个强大的工具,它允许开发者使用SWT(Standard Widget Toolkit)来创建复杂的图形用户界面,特别适用于绘制图形和图表。Draw2D是Eclipse项目的一部分,它提供了一套丰富的API,可以方便地...
《draw2d绘制图形教程详解》 在计算机编程领域,可视化和交互式界面设计是不可或缺的部分,而draw2d库正是这样一个专注于二维图形绘制的工具。draw2d库,全称为Draw2D,是一个开源的JavaScript库,它允许开发者在...
网上的Draw2D的参考资料实在是太少了,对于新手来说太不友好了,所以,我总结了一份只有10来页的PPT做为新手的快速入门教程。
Draw2D教程,介绍了Draw2D的基本知识,对学习Draw2D有所帮助
【Draw2D教程】 Draw2D是一个专门针对SWT(Standard Widget Toolkit)平台的图形库,它允许开发者创建自定义的、独立于操作系统本地组件的上层GUI组件,同时也可用于构建基于图形的应用程序。这个库主要服务于两种...
1. **文档**:详细的API参考、教程、示例代码,帮助开发者理解和使用Draw2D的各种功能。 2. **示例**:各种实际应用场景的代码示例,如图形编辑器、流程图绘制等,这些示例可以帮助初学者快速上手,并理解Draw2D在...
**GEF/Draw2D入门教程** GEF(Graphical Editing Framework)和Draw2D是Eclipse项目中的两个核心组件,主要用于构建图形用户界面(GUI)特别是图形编辑工具。它们为开发者提供了强大的图形绘制和交互功能,使得创建...
压缩包子文件的文件名称"draw2d_640x480.mp4"可能是一个视频教程或演示,尺寸640x480表明它可能是标准的视频分辨率。这个视频可能展示了如何在RAP环境中集成draw2d,或者展示了draw2d的某些功能特性。 综上所述,这...
《Draw2D Flowchart教程详解》 在信息技术领域,流程图是一种重要的图形表示工具,用于描绘系统的逻辑流程或工作步骤。Draw2D Flowchart是一款强大的开源工具,它提供了丰富的功能,帮助用户创建、编辑和展示各种...
GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子GEF的例子
【GEF-ALL-3.7+GEF-ALL-3.8+GEF_Draw2d学习资料】是一份综合性的资源包,包含了GEF(Graphical Editing Framework)的3.7和3.8版本以及与其相关的Draw2D库的学习材料。GEF是Eclipse平台上用于构建图形化编辑器框架的...
此外,阅读官方文档、教程和示例代码,以及参与社区讨论,将有助于掌握GEF和draw2d的高级特性和最佳实践。 总之,【GEF-draw2d-sdk-3.6.1.zip】是一个强大的工具,它为Eclipse用户提供了一种高效的方式来构建功能...
DirectDraw是微软Windows API的一部分,主要用于2D图形加速和游戏开发。它提供了低级别的硬件访问,使得开发者能够高效地绘制图形、处理视频以及创建动画。本教程是针对想要学习游戏编程的人们,尤其是那些对Direct...
DirectDraw是Microsoft DirectX的一部分,主要用于2D图形加速和游戏开发。这个57页的Word文档教程,名为"DirectDraw教程",提供了全面的学习资源,帮助开发者深入理解和掌握DirectDraw技术。教程大小为83k,以RAR...
【cocos2d教程 子龙山人pdf打包整理】是一个综合性的学习资源,涵盖了Cocos2D游戏开发的多个重要知识点。Cocos2D是一个开源的2D游戏引擎,广泛应用于移动平台,如iOS、Android以及桌面平台,用于创建各种类型的游戏...
DirectDraw作为DirectX的一个重要部分,专注于2D图形加速,尤其在早期的计算机游戏中广泛应用。 DirectDraw的主要功能包括: 1. **硬件加速**:DirectDraw可以利用图形硬件进行2D图形的加速,显著提升渲染速度,...
通过学习 Maxima 的相关文档和 "maxima-draw2d-plus" 的特定教程,用户可以充分利用这些新功能,将抽象的数学概念以直观的图形形式展示出来。 总之,"maxima-draw2d-plus" 提供了 Maxima 用户更强大和丰富的图形...
在这篇教程中,我们将探讨使用 Graphics 的 DrawTexture() 函数来显示2D元素的方法。 DrawTexture() 函数是 Unity3D 中的一个静态函数,用于将纹理显示在屏幕上。这个函数有多个重载,我们这里只讲解最复杂的一个...