天天看点

《Java数字图像处理:编程技巧与应用实践》——1.2 Java 2D API

本节书摘来自华章计算机《java数字图像处理:编程技巧与应用实践》一书中的第1章,第1.2节,作者 贾志刚,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

当graphics向下转型为grahpics2d时,java 2d的图形绘制引擎得以访问,一个功能更加丰富的图形库呈现在读者眼前,它就是java 2d api。如果你问笔者java 2d与swing有何关系,可以很认真地说,二者毫无瓜葛,java通过引入swing、java 2d与java 3d,极大地丰富了java的图形功能,使应用程序接口更加完善,为各种可能的图形开发提供了可靠保证与全面支持,从而也使得学习java图形方面的知识时不再那么无助了。下面来看一下java 2d对图形支持与改进都包括了哪些:

为显示设备与打印机提供统一的绘制引擎。

一个广泛的几何形状支持。

文档打印支持。

可控制的绘制质量。

增强的色彩支持。

文字、形状、图像绘制检测。

java 2d图形绘制支持的图形形状如图1-1所示。

《Java数字图像处理:编程技巧与应用实践》——1.2 Java 2D API

java 2d图形绘制最常见的是将绘制代码放在paintcomponent(graphics g)方法中,显示时swing会首先调用paint()方法。该方法会调用下面的三个方法:

paintcomponent(graphics g)

paintborder(graphics g)

paintchildren(graphics g)

在绝大多数情况下,图形绘制只需要重载paintcomponent()方法来实现。一个基本图形绘制代码如下:

太极在中国源远流长,黑白相间的太极图案已经是一个文化标志,这里将使用java 2d的图形绘制技术实现太极图案的绘制。如果仔细观察太极图案,就会发现它是非常精准的黑白对称图案。可通过设置画笔颜色来实现黑白颜色控制,利用java 2d area对图形布尔操作的支持实现太极图形绘制。java 2d area对图形shape对象进行支持的四种布尔操作如下。

union(加操作):保留两个几何形状及其重叠部分。

subtraction(减操作):从第一个几何形状减去与第二个几何形状重叠的部分。

intersection(可以看成与操作):只保留两个几何形状重叠的部分。

exclusion-or(xor异或操作):保留两个几何形状不重叠的部分。

这四种操作的示意图如图1-2所示。

《Java数字图像处理:编程技巧与应用实践》——1.2 Java 2D API

实现太极图案的相关代码如下:

运行源文件中第1章中的完整代码可以看到一个标准的太极图案。

书中所有完整的源代码均已打包上传至www.hzbook.com和github,下载后按章节索引即可找到相应的代码,强烈建议运行每个源代码实例,将源代码看成本书的一部分。