第11章 java图像图形处理

上传人:第*** 文档编号:31148434 上传时间:2018-02-05 格式:DOC 页数:26 大小:475KB
返回 下载 相关 举报
第11章 java图像图形处理_第1页
第1页 / 共26页
第11章 java图像图形处理_第2页
第2页 / 共26页
第11章 java图像图形处理_第3页
第3页 / 共26页
第11章 java图像图形处理_第4页
第4页 / 共26页
第11章 java图像图形处理_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《第11章 java图像图形处理》由会员分享,可在线阅读,更多相关《第11章 java图像图形处理(26页珍藏版)》请在金锄头文库上搜索。

1、第十一章 图形图像处理在前边的章节的图形用户界面的处理中,已经看到了图像的应用。本章将简要介绍如何在用户屏幕上绘制图形以及如何显示图像。11.1 图形在前边我们已经介绍了用户屏幕和容器的概念,也看到了如何在容器中添加组件。一般来说,在用户屏幕上绘制图形其实就是在容器组件上绘制图形。因此需要注意以下两点:1)组件中的坐标系统容器组件的坐标系统类似于屏幕的坐标系统,坐标原点(0,0)在容器的左上角,正x 轴方向水平自左向右,正 y 轴方向垂直自上向下。在 java 中,不同的图形输出设备拥有自己的设备坐标系统,该系统具有与默认用户坐标系统相同的方向。坐标单位取决于设备,比如,显示的分辨率不同,设备

2、坐标系统就不同。一般来说,在显示屏幕上的计量单位是像素(每英寸大约 90 个像素) ,在打印机上是点(每英寸大约 600 个点) 。Java 系统自动将用户坐标转换成输出设备专有的设备坐标系统。2)图形环境(graphics context)由于在组件上绘制图形使用的用户坐标系统被封装在 Graphics2D 类的对象中,所以Graphics2D 被称之为图形环境。它提供了丰富的绘图方法,包括绘制直线、矩形、圆、多边形等。下边我们先介绍与绘制图形相关的类,再介绍绘制图形的方法和步骤。11.1.1 绘制图形的类与绘制图形有关的类的层次结构如下:|- java.awt.Graphics |-jav

3、a.awt.Graphics2D|- java.awt.GraphicsConfigTemplate |- java.awt.GraphicsConfiguration |- java.awt.GraphicsDevice|- java.awt.GraphicsEnvironment Graphics 类是所有图形类的抽象基类,它允许应用程序可以在组件(已经在各种设备上实现)上进行图形图像的绘制。Graphics 对象封装了 Java 支持的基本绘制操作所需的状态信息,其中包括组件对象、绘制和剪贴坐标的转换原点、当前剪贴区、当前颜色、当前字体、当前的逻辑像素操作方法(XOR 或 Paint)等

4、等。 Graphics2D 类是从早期版本(JDK1.0 )中定义设备环境的 Graphics 类派生而来的,它提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在 Java(tm)平台上绘制二维图形、文本和图像的基础类。GraphicsDevice 类定义了屏幕和打印机这类可用于绘制图形的设备。GraphicsEnvironment 类定义了所有可使用的图形设备和字体设备。 GraphicsConfiguration 类定义了屏幕或打印机这类设备的特征。在图形绘制过程中,每个 Graphics2D 对象都与一个定义了绘制位置的目标相关联。GraphicsConfigura

5、tion 对象定义绘制目标的特征(如像素格式和分辨率等) 。在 Graphics2D 对象的整个生命周期中都使用相同的绘制标准。Griphics 和 Graphics2D 类都是抽象类,我们无法直接创建这两个类的对象,表示图形环境的对象完全取决于与之相关的组件,因此获得图形环境总是与特定的组件相关。创建 Graphics2D 对象时,GraphicsConfiguration 将为 Graphics2D 的目标(Component 或 Image)指定默认转换,所有 Graphics2D 方法都采用用户空间坐标。一般来说,图形的绘制过程分为四个阶段:确定绘制内容、在指定的区域绘制、确定绘制的颜

6、色、将颜色应用于绘图面。有三种绘制操作:几何图形、文本和图像。绘制过程中,Graphics2D 对象的 6 个重要属性如下: Paint 颜料属性决定线条绘制的颜色。它也定义填充图形的颜色和模式,系统默认的颜料属性是组件的颜色。 Font 字体属性定义了绘制文本时所使用的字体,系统默认的字体是组件的字体设置。Stroke 画笔属性确定线型,如实线、虚线或点划线等。该属性也决定线段端点的形状。系统默认的画笔是方形画笔,绘制线宽为 1 的实线,线的末端为方形,斜角线段接口为 45度斜面。 Transform 转换属性定义渲染过程中应用的转换方法。可以使绘制的图形平移、旋转和缩放。Composite

7、 合成属性决定如何在组件上绘制叠放图形。Clip 剪切属性定义了组件上的一个区域边界。图形绘制只能在该区域内进行。一般情况下,我们使用 Griphics2D 对象的方法进行图形的绘制工作, Griphics2D 对象的常用方法如下:1) abstract void clip(Shape s) 将当前 Clip 与指定 Shape 的内部区域相交,并将 Clip 设置为所得的交集。2) abstract void draw(Shape s) 使用当前 Graphics2D 上下文的设置勾画 Shape 的轮廓。3) abstract void drawImage(BufferedImage im

8、g, BufferedImageOp op, int x, int y) 呈现使用 BufferedImageOp 过滤的 BufferedImage 应用的呈现属性包括 Clip、Transform 和 Composite 属性。4) abstract boolean drawImage(Image img, AffineTransform xform, ImageObserver obs) 呈现一个图像,在绘制前进行从图像空间到用户空间的转换。5) abstract void drawString(String s,float x,float y) 使用 Graphics2D 上下文中当前

9、文本属性状态呈现由指定 String 指定的文本。6) abstract void drawString(String str, int x, int y) 使用 Graphics2D 上下文中的当前文本属性状态呈现指定的 String 的文本。7) abstract void fill(Shape s) 使用 Graphics2D 上下文的设置,填充 Shape 的内部区域。8) abstract Color getBackground() 返回用于清除区域的背景色。9) abstract Composite getComposite() 返回 Graphics2D 上下文中的当前 Comp

10、osite10) abstract Paint getPaint() 返回 Graphics2D 上下文中的当前 Paint11) abstract Stroke getStroke() 返回 Graphics2D 上下文中的当前 Stroke12) abstract boolean hit(Rectangle rect, Shape s, boolean onStroke) 检查指定的 Shape 是否与设备空间中的指定 Rectangle 相交。13) abstract void rotate(double theta) 将当前的 Graphics2D Transform 与旋转转换连接。

11、14) abstract void rotate(double theta, double x, double y) 将当前的 Graphics2D Transform 与平移后的旋转转换连接。15) abstract void scale(double sx, double sy) 将当前 Graphics2D Transform 与可缩放转换连接。16) abstract void setBackground(Color color) 设置 Graphics2D 上下文的背景色。17) abstract void setComposite(Composite comp) 为 Graphic

12、s2D 上下文设置 Composite Composite 用于所有绘制方法中,如 drawImage、drawString、draw 和 fill 它指定新的像素如何在呈现过程中与图形设备上的现有像素组合。18) abstract void setPaint(Paint paint) 为 Graphics2D 上下文设置 Paint 属性。19) abstract void setStroke(Stroke s) 为 Graphics2D 上下文设置 Stroke20) abstract void setTransform(AffineTransform Tx) 重写 Graphics2D

13、上下文中的 Transform。21) abstract void shear(double shx, double shy) 将当前 Graphics2D Transform 与剪裁转换连接。22) abstract void translate(double tx, double ty) 将当前的 Graphics2D Transform 与平移转换连接。23) abstract void translate(int x, int y) 将 Graphics2D 上下文的原点平移到当前坐标系统中的点 (x, y)。11.1.2 简单几何图形类的层次结构在 java.awt.geom 包中定

14、义了几何图形类,包括点、直线、矩形、圆、椭圆、多边形等等。该包中各类的层次结构如下:|- java.lang.Object |- java.awt.geom.AffineTransform |- java.awt.geom.Area |- java.awt.geom.CubicCurve2D |- java.awt.geom.CubicCurve2D.Double |- java.awt.geom.CubicCurve2D.Float |- java.awt.geom.Dimension2D |- java.awt.geom.FlatteningPathIterator |- java.awt

15、.geom.Line2D |- java.awt.geom.Line2D.Double |- java.awt.geom.Line2D.Float |- java.awt.geom.Path2D |- java.awt.geom.Path2D.Double|- java.awt.geom.Path2D.Float|- java.awt.geom.GeneralPath|- java.awt.geom.Point2D |- java.awt.geom.Point2D.Double|- java.awt.geom.Point2D.Float|- java.awt.geom.QuadCurve2D

16、|- java.awt.geom.QuadCurve2D.Double|- java.awt.geom.QuadCurve2D.Float |- java.awt.geom.RectangularShape |- java.awt.geom.Arc2D |- java.awt.geom.Arc2D.Double|- java.awt.geom.Arc2D.Float |- java.awt.geom.Ellipse2D |- java.awt.geom.Ellipse2D.Double|- java.awt.geom.Ellipse2D.Float |- java.awt.geom.Rectangle2D |- java.awt.geom.Rectangle2D.Double|- java.awt.geom.Rectangle2D.Float |- java.awt.geom.RoundRectangle2D|- java

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号