




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第14章 图形与图像 14.1 绘制文本 14.2 绘制基本图形 14.3 建立字体 14.4 清除 14.5 Java 2D 14.6 图形的布尔运算 14.7 绘制钟表 14.8 绘制图像 14.9 制作JPG图像 14.10 XOR绘图模式 14.11 打印图形、图像 Component类有一个方法public void paint(Graphics g),我们可以在其子类中重写 这个方法。当重写这个方法时,相应的java运 行环境将参数g实例化,对象g就可以在该组件 的坐标系内绘制图形、图像等。组件都是矩形 形状,组件本身有一个默认的坐标系,组件的 左上角的坐标值是(0,0)。如果一个组件的宽 是200,高是80,那么,该坐标系中,x坐标 的最大值是200,y坐标的最大值是80。 14.1绘制文本 drawString(String s, int x, int y) 从参数x 、y指定的坐标位置处,从左向右绘制参数s指 定的字符串。 drawChars(char data,int offset, int length, int x, int y) 绘制data数组中的部分 字符,length指定数组中要连续绘制的字符的 个数,offset是首字符在数组中的位置。 14.2绘制基本图形 1直线 drawLine(int x1,int y1,int x2,int y2) 绘制从起点(x1,y1)到终点 (x2,y2)的直线段 2矩形 drawRect (int x,int y,int w,int h) 绘制矩形 fillRect (int x,int y,int w,int h) 填充矩形 矩形的左上角的坐标由参数x、y指定,矩形的宽和高由参数w,h指 定。 3圆角矩形 drawRoundRect(int x,int y,int w,int h,int arcW,int arcH) 绘制圆 角矩形 fillRoundRect(int x,int y,int w,int h,int arcW,int arcH) 填充圆角 矩形 参数arcW、arcH指定圆角的尺寸,见图14.1中的4个黑角部分。 4椭圆 drawOval(int x,int y,int w,int h) 绘制椭圆 fillOval(int x,int y,int w,int h) 填充椭圆 其中,参数x、y给出椭圆距x轴和y轴的距离,参数w、h给出椭 圆的宽和高。 5圆弧 圆弧就是椭圆的一部分。 drawArc(int x,int y,int width,int height,int starAngle, int arcAngle) 绘制圆弧 fillArc(int x,int y,int width,int height,int starAngle,int arcAngle) 填充圆弧 参数x、y、width、heigth指定椭圆的位置和大小,参数 starAngle和 arcAngle的单位都是“度”。而起始角度的0度是3点 钟的方位。参数starAngle,arcAngle表示从starAngle的角度 开始逆时针或顺时针方向画arcAngle度的弧,当arcAngle是正 值时为逆时针,否则为顺时针。starAngle的值可以是负值,例 如-90度是6点的方位。 14.3 建立字体 setFont(Font f) 设置字体。当绘制文 本时,Graphics对象用参数f指定的字体 。 14.4 清除 clearRect(int x,int y,int width,int height) 用背景色填充指定矩形以达到 清除该矩形的效果,也就是说当一个 Graphics对象使用该方法时,相当于在 使用一个“橡皮擦”。参数x、y是被清除 矩形的左上角的坐标;另外两个参数是 被清除矩形的宽和高。 14.5 Java 2D Java1.2给出了一个新类Graphics2D,它是 Graphics类的子类。一个Graphics2D对象把 直线、圆等作为一个对象来绘制,也就是说, 如果想用一个Graphics2D类型的“画笔”来画 一个圆的话,就必须先创建一个圆的对象。我 们仍需使用paint(Graphics g)方法来绘制,只 需将Graphics对象强制转化为Graphics2D对 象即可。 1直线 使用java.awt.geom包中的Line2D的子类 Line2D.Double创建一个直线对象。如: Line2D line=new Line2D.Double(12,20,100, 90); 创建一条(12,20)到(100,90)直线对象。 2矩形 使用java.awt.geom包中的Rectangle2D. Double类来创建一个矩形对象,如: Rectangle2D rect=new Rectangle2D. Double (50,50,300,50.897); 上述语句创建了一个左上角坐标是(50,50), 宽是300,高是50.987的一个矩形对象。 3圆角矩形 使用java.awt.geom包中的RoundRectangle2D. Double类来创建一个圆角矩形对象: RoundRectangle2D rect_round=new RoundRectangle2D. Double (50,50,300,50,8,5); 上述语句创建了一个左上角坐标是(50,50),宽是300 ,高是50,圆角的长轴和短轴分别为8和5的圆角矩形 对象。 4椭圆 使用java.awt.geom包中的Ellipse2D. Double类来创 建一个椭圆对象: Ellipse2D ellipse=new Ellipse2D. Double (50,30,300,50); 上述语句创建了一个外接矩形的左上角坐标是(50,30) ,宽是300,高是50的椭圆对象。 5绘制圆弧 使用java.awt.geom包中的Arc2D. Double类创建一个 圆弧对象: Arc2D ellipse=new Arc2D. Double (50,30,300,50,0,100,Arc.PIE); 上述语句创建了一个外接矩形的左上角坐标是(50,30) ,宽是300,高是50的起始角是0度终止角是100度的 饼弧对象。其中,最后一个参数取值:Arc2D.OPEN 、Arc2D.CHORD、Arc2D.PIE决定弧是开弧、弓弧 和饼弧。 6绘制二次曲线和三次曲线 二次曲线可用二阶多项式 y(x)=ax2+bx+c 来表示。一条二次曲线需要三个点来确定。使用 java.awt.geom包中的QuadCurve2D.Double类来创建 一个二次曲线: QuadCurve2D curve=new QuadCurve2D.Double (50,30,10,10,50,100); 上述代码片段使用端点(50,30)和(50,100)及 控制点(10,10)创建了一条二次曲线。 7旋转图形 我们有时需要平移、缩放或旋转一个图形,我们可以使用 AffineTransform类来实现对图形的这些操作。 (1)首先使用AffineTransform类创建一个对象: AffineTransform trans=new AffineTransform(); 对象trans具有最常用的三个方法来实现对图形变换操作: translate(double a,double b) 将图形在x轴方向移动a 个单位 像素,y 轴方向移动b个像素单位。a是正值时向右移动,负值是向左移动;b是正 值时是向下移动,负值向上移动。 scale(double a,double b) 将图形在x轴方向缩放a倍,y轴方向缩放b倍 。 rotate(double number,double x,double y) 将图形沿顺时针或逆时针以 (x,y)为轴点旋转number个弧度。 (2)进行需要的变换,比如要把一个矩形绕点(100,100)顺时针旋转60 度,那么就要先作好准备: trans.rotate(60.0*3.1415927/180,100,100); (3)把Graphics对象,比如g_2d设置为具有trans这种功能的“画笔”: g_2d.setTransform(trans); 假如rect是一个矩形对象,那么g_2d.draw(rect)画的就是旋转后的矩形 14.6 图形的布尔运算 假设T1、T2是两个图形,那么 T1和T2的布尔“与”(AND)运算的结果是两个 图形的重叠部分。 T1和T2的布尔“或”(OR)运算的结果是两个图 形的合并。 T1和T2的布尔“差”(NOT)运算的结果是T1去 掉T1和T2的重叠部分。 T1和T2的布尔“异或”(XOR)运算的结果是两个 图形的非重叠部分。 14.7 绘制钟表 钟表可以显示当前本机的时间。在这里 我们要用到一个数学公式,如果一个圆 的圆心是(0,0),那么对于给定圆上的一 点(x,y),该点按顺时针旋转弧度后的的 坐标(m,n)由下列公式计算: m=xcos()- ysin() n=ycos()+xsin() 14.8 绘制图像 Toolkit类是一个抽象类,不能用构造方法直接创建 这样对象,但Java运行环境提供了一个Toolkit对 象,任何一个组件调用getToolkit()方法可以返 回这个对象的引用。Tollkit类有一个获取图像的方 法getImage(String s)。 Graphics 类提供的方法: drawImage(Image img,int x,int y,ImageObserver observer): 绘制的Image对象;x、y是要绘制指定图像的矩形 的左上角所处的位置,observer是加载图像时的图 像观察器。 14.9 制作JPG图像 制作JPG图像步骤如下: 用java.awt.image包中的BufferedImage类(Image的 子类)建立一个BufferedImage对象。 BufferedImage对象调用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒吧寻人活动方案
- 茶庄年会活动方案
- 高考会考试题及答案
- 高级防水考试题及答案
- 抚育技师考试题及答案
- 客户需求调研与问题解决方案
- 风景速描考试题及答案
- 我校招生宣传承诺书(3篇)
- 品牌宣传策略方案
- (正式版)DB15∕T 3355-2024 《规模化舍饲养羊主要疫病综合防治技术规程》
- 连铸工岗位操作规程考核试卷及答案
- 第一单元 第2课《童真时光》 【人教版】美术 三年级上册
- 广州市公安局天河分局招聘辅警考试真题2024
- 2025年全国货运驾驶员职业技能资格考试试题(基础知识)含答案
- 经济效益证明(模板)
- 《企业年度培训计划制定》
- 医疗机构卫生技术人员名录
- 安全文明施工措施费使用计划表完整优秀版
- 材料、构配件进场检验记录
- 大象版五年级科学上册 《感官、大脑与认知》教育教学课件
- 2.5人脑的高级功能-高二上学期生物人教版(2019)选择性必修1
评论
0/150
提交评论