Java图形处理和Java_2D

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第7章Java图形处理和Java2D学习导读Java语言的类库中提供了丰富的绘图方法,其中大部分对图形、文本、图像的操作方法都定义在Graphics类中,Graphics类是java.awt程序包的一部分。本章介绍的内容包括了颜色、字体处理、基本图形绘制方法、文本处理以及Java2D中Graphics2D提供的基本图形绘制和图形特殊效果处理等方面的内容。课程结构7.1Java图形坐标系统和图形上下文7.2Color类7.3Font类和FontMetrics类7.4常用的绘图方法7.5Java2D简介7.1Java图形坐标系统和图形上下文Java坐标系统Java的坐标原点(0,0)位于屏幕的左上角,坐标度量以象素为单位,水平向右为X轴的正方向,竖直向下为Y轴的正方向,每个坐标点的值表示屏幕上的一个像素点的位置,所有坐标点的值都取整数,如下图所示。x轴y轴(0,0)xy(x,y)7.1Java图形坐标系统和图形上下文图形上下文(graphicscontext)图形上下文有时也称为图形环境,指允许用户在屏幕上绘制图形的信息,它由Graphics类封装,可以通过Component类的getGraphics()方法返回获得。图形上下文表示一个绘制图层,如组件的显示区、打印机上的一页、或一个屏幕外图像缓冲区。7.2Color类Color类使用了sRGB(standardRGB,即标准RGB)颜色空间来表示颜色值。颜色由红(R)、绿(G)、蓝(B)三原色构成,每种原色的强度用一个byte值表示,每种原色取值从0(最暗)~255(最亮),可以根据这三种颜色值的不同组合,显示不同的颜色效果。在Java中Color类定义了13种颜色常量供用户使用,除此之外,用户也可以通过Color类提供的构造函数Color(intr,intg,intb)创建自己需要的颜色。7.3Font类和FontMetrics类Font类可以使用java.awt.Font类创建字体对象Font类的构造函数为:Font(Stringname,intstyle,intsize);如:Fontfont=newFont(“Serif”,Font.ITALIC,10);7.3Font类和FontMetrics类例7.1在控制台下输出系统所有的可用字体。程序源代码见ShowAvaliableFont.java,程序运行结果见图7-1。图7-17.3Font类和FontMetrics类FontMetrics类FontMetrics类是一个抽象类,要使用FontMetrics对象,可以通过调用Graphics类中的getFontMetrics()方法。FontMetrics定义字体的度量,给出了关于在特定的组件上描绘特定字体的信息。这些字体信息包括了ascent(上升量)、descent(下降量)、leading(前导宽度)和height(高度)。7.3Font类和FontMetrics类例7.2在框架中央位置显示字符串“JavaProgramming”,并将字体设置为Serif、粗斜体、大小为30,颜色为红色,而将框架背景设置为淡灰色。程序源代码见FontMetricsDemo.java,程序运行结果见图7-2。图7-27.4常用的绘图方法绘制直线在Java中可以使用下面方法绘制一条直线:drawLine(intx1,inty1,intx2,inty2);绘制矩形普通直角矩形drawRect(intx,inty,intwidth,intheight);fillRect(intx,inty,intwidth,intheight);圆角矩形drawRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight);fillRoundRect(intx,inty,intwidth,intheight,intarcWidth,intarcHeight);三维矩形draw3DRect(intx,inty,intwidth,intheight,booleanraised);fill3DRect(intx,inty,intwidth,intheight,booleanraised);7.4常用的绘图方法绘制椭圆drawOval(intx,inty,intwidth,intheight);fillOval(intx,inty,intwidth,intheight);例7.3在框架中绘制直线、矩形和椭圆。程序源代码见DrawImageDemo.java,程序运行结果见图7-3。图7-37.4常用的绘图方法绘制弧形drawArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle);fillArc(intx,inty,intwidth,intheight,intstartAngle,intarcAngle);绘制多边形和折线段绘制多边形drawPolygon(int[]xPoints,int[]yPoints,intnPoints);fillPolygon(int[]xPoints,int[]yPoints,intnPoints);绘制折线段drawPolygonline(int[]xPoints,int[]yPoints,intnPoints);7.4常用的绘图方法例7.4在框架中绘制扇形和星形。程序源代码见DrawArcPolygon.java,程序运行结果见图7-3。图7-47.5Java2D简介Java2DAPIJava2DAPI(ApplicationProgrammingInterface)增强了抽象窗口工具包(AWT)的图形、文本和图像功能,可以创建高级图形库,开发更为强大的用户接口和新型的Java应用程序。Java2D是Java核心类库的一部分,它包含的包有:•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.jpeg7.5Java2D简介Graphics2D简介Graphics2D对象保存了大量用来确定如何绘制图形的信息,其中大部分都包含在一个Graphics2D对象的6个属性之中,这6个属性分别为:(1)绘制(paint)(2)画笔(stroke)(3)字体(font)(4)转换(transform)(5)剪切(clip)(6)合成(composite)7.5Java2D简介Graphics2D的图形绘制Graphics2D是Graphics类的子类,也是一个抽象类,不能实例化Graphics2D对象,为了使用Graphics2D,可以通过Graphics对象传递一个组件的绘制方法给Graphics2D对象。方法如下面代码段所示:publicvoidpaint(Graphicsg){Graphics2Dg2=(Graphics2D)g;……}7.5Java2D简介例7.5使用Graphics2D绘制直线、矩形和椭圆。程序源代码见Graphics2DDemo.java,程序运行结果见图7-5。图7-57.5Java2D简介Graphics2D的属性设置paint用于填充绘制图形的颜色或图案,在Java2DAPI中提供了两种paint属性的填充方式:GradientPaint和TexturePaint。GradientPaint类提供了下面的构造方法来建立颜色渐变方式:①GradientPaint(floatx1,floaty1,Colorcolor1,floatx2,floaty2,Colorcolor2);②GradientPaint(floatx1,floaty1,Colorcolor1,floatx2,floaty2,Colorcolor2,booleancyclic);③GradientPaint(Point2Dp1,Colorcolor1,Point2Dp2,Colorcolor2);④GradientPaint(Point2Dp1,Colorcolor1,Point2Dp2,Colorcolor2,booleancyclic);TexturePaint类的构造方法为:TexturePaint(BufferedImagetxtr,Rectangle2Danchor)。7.5Java2D简介例7.6使用GradientPaint渐变填充方式和TexturePaint纹理填充方式绘制图形。程序源代码见PaintDemo.java,程序运行结果见图7-6,使用纹理填充方式绘制图形的填充单元图像见图7-7。图7-6图7-77.5Java2D简介Graphics2D的属性设置stroke用于在绘制图形的轮廓时确定线条的形状和粗细,通常使用BasicStroke对象来定义、通过setStroke()方法设定stroke的属性值。BasicStroke类提供了下面的构造方法来建立画笔的绘制方式:7.5Java2D简介①BasicStoke();②BasicStoke(floatwidth);③BasicStoke(floatwidth,intcap,intjoin);④BasicStoke(floatwidth,intcap,intjoin,floatmiterlimit);⑤BasicStoke(floatwidth,intcap,intjoin,floatmiterlimit,float[]dash,floatdash_phase);width-此BasicStroke的宽度。此宽度必须大于或等于0.0f。如果将宽度设置为0.0f,则将笔划呈现为可用于目标设备和抗锯齿提示设置的最细线条。cap-BasicStroke端点的装饰join-应用在路径线段交汇处的装饰miterlimit-斜接处的剪裁限制。miterlimit必须大于或等于1.0f。dash-表示虚线模式的数组dash_phase-开始虚线模式的偏移量7.5Java2D简介CAP_BUTT无装饰地结束未封闭的子路径和虚线线段。CAP_ROUND使用半径等于画笔宽度一半的圆形装饰结束未封闭的子路径和虚线线段。CAP_SQUARE使用正方形结束未封闭的子路径和虚线线段,正方形越过线段端点,并延长等于线条宽度一半的距离。7.5Java2D简介例7.7使用BasicStroke类设定画笔绘制样式。程序源代码见StrokeDemo.java,程序运行结果见图7-8。图7-87.5Java2D简介Graphics2D的属性设置composite用于定义绘制重叠图形的绘制方式。可以通过setComposite()方法来将AlphaComposite对象添加到Graphics2D上下文中,设置图像重叠部分的复合样式。7.5Java2D简介例7.8使用AlphaComposite类设定重叠区域的图形绘制样式。程序源代码见CompositeDemo.java,程序运行结果见图7-9.图7-97.5Java2D简介例7.9使用BasicStroke类设定输出文字的显示样式,并对文字进行TexturePaint方式的填充。程序源代码见TextPaintDemo.java,程序运行结果见图7-10。图7-107.5Java2D简介GeneralPath类GenealPath类是定义在java.geom包中的类,我们可以使用GeneralPath类来定义复杂的不规则图形的绘制路径。GeneralPath类提供的构造函数有:①GeneralPath();②GeneralPath(intrule);③GeneralPath(intrule,intinitialCapacity);④GeneralPath(Shapes)。7.5Java2D简介例7.10使用Genera

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功