Java 版 (精华区)
发信人: allen (夏夜晚风·原来的我), 信区: Java
标 题: [蔡学镛][Learning Java the O'Reilly's Way] 9
发信站: 哈工大紫丁香 (2002年08月21日00:50:27 星期三), 站内信件
发信人: NullPointer (宁与骐骥亢轭,不随驽马之迹)
发信站: BBS 水木清华站 (Sun Jun 30 19:24:35 2002)
Learning Java the O'Reilly's Way (Part IX)
Java 2D Graphics
在看过 Direct3D 和 OpenGL 之后,你一定会以为图学的 API
都很复杂难用,那么你应该瞧瞧 Java 2D 和 Java 3D,相信你
一定会改变你的想法。Java 2D 和 Java 3D 整合进了对象导向
的观念来以简驭繁,Java 程序员可以轻易地绘出令人赞叹的
2D/3D图形。想学绘图程序设计,却又在接触 Direct3D 和
OpenGL 之后铩羽而归的读者,不妨改从 Java 2D/3D 下手。
O'Reilly 已经出版了一本 Java 2D 的书,书名叫做「Java 2D
Graphics」,本书中文版也即将于 2000 年 9 月出版,中文书
名为「Java 2D 绘图技术」。「Java 2D Graphics」一书是由
O'Reilly 的王牌作者 Jonathan Knudsen 所着。不过,目前
O'Reilly 尚未出版任何 Java 3D的书。在详读过「Java 2D
Graphics」之后,我倒很希望 Jonathan 再写一本「Java 3D
Graphics」来造福读者(顺便造福我)。
不要以为只有设计绘图程序或游戏软件才会用到 Java 2D,其实
Java 2D 的用途可能远比你想象来得广泛。我认为,只要你的程
序有 GUI,就很可能会用到 Java 2D。因为AWT 和 Swing 的组件
常常无法完全适合我们,这个时候自己绘制一部分的 GUI 就有绝对
的必要。如果,你的Java 程序需要 GUI,那么我建议你早点把Java
2D 学好,以备不时之需。以我自己的例子来说,我正在开发一套软
件,需要提供一个表格状的 GUI,而 Swing 的 JTable 却不适合我
使用,因为我的表格需要能在同一个 column的不同 cell 放进不同
种类的组件,我也需要 cell 之间能够合并,我还需要有特殊的
selection model...... 这些都是 JTabel 不支持的,所以我就用
Java 2D 自己绘制这一切。有了 Java 2D 的帮忙,这一切简单多了,
而呈现出来的视觉效果也很不错(当然,一方面要归功我的美术细
胞,谢谢你们!我的美术细胞们)。
Java 2D 是 Core API,所以使用 Java 2D 的程序不需要额外安装
任何package。其实,AWT和Swing都是透过 Java 2D 来进行绘图的。
你可能会问,Java 在 1.0 和 1.1 就有绘图的 API 了,为什么在
Java 2 (JDK 1.2) 之后还要多出一个 Java 2D。其实,Java 2D
比起以前的「阳春绘图 API」可是功能强大许多, 下面列出以前
「阳春绘图 API」的几点局限之处:
* 所有线条只能用单一像素的宽度画出。
* 只能使用少数几种字形。
* AWT 没有提供很多绘画控件目。举例来说,你无法操纵单一字符
的形状。
* 如果你想要旋转、或放大缩小任何对象,必须要自己动手进行数
学运算才能达成。
* 如果你想要进行渐层或花纹等特殊着色方式,必须自己动手做。
* 只提供最基本的影像功能。
* 要控制透明度,必须大费周章。
这些都已经在 Java 2D 中得到解决。如果这些文字叙述无法让你感
受到 Java 2D 的威力,那么请打开你的计算机执行 JDK 所附的一
个范例程序:
C:\> cd \jdk1.3\demo\jfc\Java2D
C:\jdk1.3\demo\jfc\Java2D> java -classpath Java2Demo.jar Java2Demo
很惊人,是不是?呵呵!还有更吓人的呢!请看 Vincent J. Hardy 所
着的「Java 2D API Graphics」(Sun Press 出版)一书所附的一堆彩
色图片,保证你会大吃一惊。没错!这都是用 Java 2D 做出来的。
(可不是 Corel Draw 呦!)
绘图本来就是很复杂的一件学问,Java 2D 的 API 虽然好用、易扩充,
但是前提是:你要彻底懂它的原理和架构。这时候,一本深入浅出,说
理清楚的入门书就有必要了,我认为 Jonathan 所着的这本书很适合用
来引导程序员学习Java 2D,是一本初、中阶的书。而Vincent J.Hardy
的「Java 2D API Graphics」(Sun Press 出版)也是一本很棒的书,
较偏中、高阶。在读过 Jonathan 的「Java 2D Graphics」之后,我建
议读者再继续把 Vincent J. Hardy的「Java 2D API Graphics」一书
读过,因为 Vincent J. Hardy的书中有介绍光影变化等进阶的主题,
还附有作者自行开发的 GLF(Graphics LayerFramework),让程序员
可以轻易地叠出漂亮的视觉效果。Vincent J. Hardy 目前是Sun 的员
工,所以 GLF 目前虽然是 com.sun.glf,但我觉得 GLF 以后有可能会
变成javax.glf,因为 GLF实在好用。
在读过 Jonathan 的书之后,读者都会很喜欢 Jonathan 的写作风格,
因为 Jonathan 可以把复杂的原理用浅显的方式来表达,「Java 密码
学」如是,「Java 2D 绘图技术」一书亦如是。因为喜欢这本书,所
以我接下本书中文版的技术编辑,希望中文版能让你满意。
--
那是一个充满幻想的梦境,
梦虽然很长,不变的是梦的结局——醒来。
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 218.7.25.106]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.224毫秒