首页 历史故事 基于技术的二维表达

基于技术的二维表达

时间:2023-01-19 历史故事 版权反馈
【摘要】:这些新几何类是java.awt.geom包的组成部分。Shape提供说明、检查几何路径对象的公共协议。
基于技术的二维表达_网络地理信息系统

6.2.1 基于Java2D技术的二维表达

1.概念

Java2D(Sun,2009)是SUN公司在Java1.1绘制模型的基础上,从Java1.2后,针对网络环境下绘图的需要,全新开发的高质量图形图像程序包,包含了绘图环境(Graphics2D)、几何模型、画法属性、影像处理、坐标变换等特性。它是JDK1.2的重要组成部分,由java.awt、java.awt.image、java.awt.color、java.awt.font、java.awt.geom、java.awt.print、java.awt.image. renderable和com.sun.image.codec.jpeg包组成,能完成点、线、面等几何形体和自定义二维复杂形体的绘制。

2.基本功能

Java 2D提供了实现非常复杂图形的机制,这些机制同Java平台的GUI体系结构很好地集成在一起。尤其是,Java 2D为开发人员提供了下列功能:

①渲染质量的控制。没有Java 2D,绘制图形时就无法进行抗锯齿,而分辨率也变得最小,只有一个像素。

②裁剪、合成和透明度。它们允许使用任意形状来限定绘制操作的边界。它们还提供对图形进行分层以及控制透明度和不透明度的能力。

③绘制和填充简单及复杂的形状。这种功能提供了一个Stroke代理和一个Paint代理,前者定义用来绘制形状轮廓的笔,后者允许用纯色、渐变色和图案来填充形状。

④图像处理和变换。Java 2D同Java高级图像API(Java Advanced Imaging API(JAI))协作,支持用大量图形格式处理复杂的图像。Java 2D还提供了修改图像、形状和字体字符的变换能力。

⑤高级字体处理和字符串格式化。允许像操作任何其他图形形状一样操作字体字符。除此以外,可以如文字处理程序一样,通过String中的字符应用属性和样式信息来创建格式化文本。

⑥改进的绘图环境。在Java1.1绘图环境java.awt.Graphics类的基础上,设计了新的绘图环境java.awt.Graphics2D,兼容原有的功能,并在画笔、字体方面的支持做了重大改进。

另外,它还有可扩展的几何模型、可变换的字体、增强的影像处理和新增的坐标变换功能。

3.几何模型

java.awt.geom包包含可以绘制任何形状的“GeneralPath”类。它可以由许多不同种类的子路径构成,例如线段和曲线等。同时定义了许多基本几何图形,包括Arc2D、CubicCurve2D、Line2D等。这些类有两种坐标精度,分别是浮点型和双精度类型。此外,CAG(constructive area geometry)操作可以对基本图形做布尔运算而产生新图形,包含并(union)、交(intersection)、差(subtraction)和Exclusive OR(XOR)等运算。AffineTransform类则提供图形对象缩放、旋转和卷积等形式的坐标转换功能。

Java 2D API提供了几种定义,诸如点、直线、曲线和矩形等常用几何对象的类。这些新几何类是java.awt.geom包的组成部分。为保持向后兼容性,以前版本的JDK软件的几何类(例如Rectangle、Point和Polygon)仍在java.awt包中。

Java 2D API几何类(例如GeneralPath、Arc2D和Rectangle2D)实现java.awt定义的Shape接口。Shape提供说明、检查几何路径对象的公共协议。新接口PathIterator定义了从几何形状检索元素的方法。用几何类可以很容易地定义和处理几乎所有二维对象。Jave 2D几何对象及其用途如表6-2所示。

表6-2 Java2D几何对象及其用途表

img104

续表

img105

4.编程接口

java.awt包含了一些新增的2D API类和接口。其中Graphics2D类继承自java.awt.Graphics类,是描绘2D图形的对象。如同前版本的JDK所使用的绘图模式一样,当有对象要被描绘时,paint或是update方法会自动根据适当的图形上下文来获得图形设备的描述,完成绘图的工作。所谓的图形上下文是与图形设备相关状态属性的集合。在Graphics2D中新增了许多状态属性,例如Stroke、Paint、Clip、Transform等。

在Java2D编程中,主要步骤包含如下:第一个步骤是产生Graphics2D对象;其次是设置状态属性,例如想要对一几何对象做渐进式的填色,可以设定属性Paint为GradientPaint;最后调用Graphics2D所提供的Rendering方法,比如fill或draw,完成图形的绘制。

5.在网络GIS应用

由于其良好的扩充性、优越的跨平台性、丰富的功能和动态代码运行机制,目前Java2D已经在网络GIS的客户端表达中占有重要的位置。例如,流行网络GIS软件都有基于Java2D API的客户端浏览工具,可以用于地图要素的绘制、符号的表现、动态注记(如图6-2)(朱欣焰等,2004)、专题图制作和统计图(如图6-3)的生成。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈