首页 理论教育 图形绘制类图形环境

图形绘制类图形环境

时间:2022-02-28 理论教育 版权反馈
【摘要】:图形环境的概念与在GUI平台上开发应用程序紧密相关。Java语言中提供这些功能的基类是java.awt.Graphics。该特性包含的形状定义了图形环境的区域,绘制将作用于该区域。④ClipBounds:java.awt.Rectangle对象,表示将包围由Clip特性定义的Shape的最小矩形。请注意,没有对任意形状进行操作的操作。直到Java 2D出现以前,图形操作一直都是很有局限性的。棋盘上需要绘制实心的圆,请参考Graphics中圆形绘制的API。

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)

img598

(2)填充形状轮廓的绘制方法(省略了方法的参数,请参考API)

img599

(3)诸如translate()之类的杂项方法

它们将图形环境的起点从其缺省值(0,0)变成其他值。

请注意,没有对任意形状进行操作的操作。直到Java 2D出现以前,图形操作一直都是很有局限性的。还需注意的是,对于渲染具有属性的文本也没有直接支持;显示格式化文本是一项费事的任务,需要手工完成。

【例10-3】 使用Graphics中绘制直线的方法,绘制一个网格。

img600

下面是HTML文件:

img601

程序运行结果如图10-2所示。

分析与思考:上面的程序省略了init、start、stop和destroy等,默认继承了JApplet相关的方法。

模仿例10-3:把上面的网格的参数进行修改,绘制成一个围棋的棋盘。棋盘上需要绘制实心的圆,请参考Graphics中圆形绘制的API。

img602

图10-2 画线程序

【例10-4】 使用Graphics中绘制圆形的方法,绘制若干柱体和锥体。

img603

下面是HTML文件:

img604

程序运行结果如图10-3所示。

img605

图10-3 圆形绘制

分析与思考:这个例子相对比较简单,就是用Graphics中的drawOval方法进行圆形的绘制。

模仿例10-4:模仿上面的例子,绘制圆锥体,锥顶在上方。

【例10-5】 使用Graphics中的绘图方法绘制图片(关于绘图的内容,随后的10.5.1节还有更详细的讲解)。

img606

下面是HTML文件:

img607

程序运行结果如图10-4所示。

img608

图10-4 图片绘制

分析与思考:drawImage的第4个参数要求是一个Observer(这是一个接口),Applet是实现了这个接口的,因此可以使用this。

模仿例10-5:模仿上面的例子,在界面中不同的位置再添加几幅图片,并显示。

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

我要反馈