10.3.2 图形绘制———Graphics类
图形环境的概念与在GUI平台上开发应用程序紧密相关。虽然通常将窗口和组件本身作为对象来表达,但仍然需要另一个接口来执行实际的绘制、着色以及文本输出操作。Java语言中提供这些功能的基类是java.awt.Graphics。从java.awt.Component类(所有窗口对象的基类)继承的类提供了一个名为paint()的方法,在需要重新绘制组件时,调用该方法。paint()方法只有一个参数,该参数是Graphics类的实例。
Graphics类支持几种确定图形环境状态的特性,以下列出了部分特性。
①Color:当前绘制颜色,它属于java.awt.Color类型。所有的绘制、着色和纯文本输出都将以指定的颜色显示。
②Font:当前字体,它属于java.awt.Font类型。它将用于所有纯文本输出的字体。
③Clip:java.awt.Shape类型的对象,它充当用来定义几何形状的接口。该特性包含的形状定义了图形环境的区域,绘制将作用于该区域。通常情况下,这一形状与整个图形环境相同,但也并不一定如此。
④ClipBounds:java.awt.Rectangle对象,表示将包围由Clip特性定义的Shape的最小矩形。它是只读特性。
⑤FontMetrics:java.awt.FontMetrics类型的只读特性。该对象含有关于图形环境中当前起作用的Font的信息。
⑥Paint Mode:该特性控制环境使用当前颜色的方式。如果调用了setPaintMode()方法,那么所有绘制操作都将使用当前颜色;如果调用了setXORMode()方法(该方法获取一个Color类型的参数),那么就用指定的颜色对像素做“XOR”操作,XOR具有在重新绘制时恢复初始位模式的特性,因此它被用作橡皮擦除和动画操作。
下面介绍Graphics类中的一些重要方法。
可以将java.awt.Graphics支持的非特性方法划分为如下3个常规类别之下。
(1)跟踪形状轮廓的绘制方法(省略了方法的参数,请参考API)
(2)填充形状轮廓的绘制方法(省略了方法的参数,请参考API)
(3)诸如translate()之类的杂项方法
它们将图形环境的起点从其缺省值(0,0)变成其他值。
请注意,没有对任意形状进行操作的操作。直到Java 2D出现以前,图形操作一直都是很有局限性的。还需注意的是,对于渲染具有属性的文本也没有直接支持;显示格式化文本是一项费事的任务,需要手工完成。
【例10-3】 使用Graphics中绘制直线的方法,绘制一个网格。
下面是HTML文件:
程序运行结果如图10-2所示。
分析与思考:上面的程序省略了init、start、stop和destroy等,默认继承了JApplet相关的方法。
模仿例10-3:把上面的网格的参数进行修改,绘制成一个围棋的棋盘。棋盘上需要绘制实心的圆,请参考Graphics中圆形绘制的API。
图10-2 画线程序
【例10-4】 使用Graphics中绘制圆形的方法,绘制若干柱体和锥体。
下面是HTML文件:
程序运行结果如图10-3所示。
图10-3 圆形绘制
分析与思考:这个例子相对比较简单,就是用Graphics中的drawOval方法进行圆形的绘制。
模仿例10-4:模仿上面的例子,绘制圆锥体,锥顶在上方。
【例10-5】 使用Graphics中的绘图方法绘制图片(关于绘图的内容,随后的10.5.1节还有更详细的讲解)。
下面是HTML文件:
程序运行结果如图10-4所示。
图10-4 图片绘制
分析与思考:drawImage的第4个参数要求是一个Observer(这是一个接口),Applet是实现了这个接口的,因此可以使用this。
模仿例10-5:模仿上面的例子,在界面中不同的位置再添加几幅图片,并显示。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。