201711671106《Java程序设计》第十四章总结

本文详细介绍Java中如何使用Component类及其paint方法绘制各种图形,包括直线、矩形、圆角矩形、椭圆、圆弧等,并介绍如何通过AffineTransform类进行图形变换,以及如何进行图形的布尔运算。此外,还介绍了如何加载和绘制图像,以及如何播放不同格式的音频。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第十四章 图形、图像与音频

Component类有一个方法public(Graphics g),只要重写这方法,当运行时Java运行环境可以将参数g实例化在重写paint方法上的组件绘制图形、图像。

绘制基本图形

1.直线:java.awt.geom包中的Line2D的静态内部类Double :new Line2D.Double(double x1,double y1,double x2,double y2)

2.矩形:Rectangle2D.Double类:new Rectangle2D.Double(double x1,double y1,double w,double h)坐标x1,y1,宽w,高h

3.圆角矩形:RoundRectangle2D.Double类:new RoundRectangle2D.Double(double x1,double y1,double w,double h,double arcw,double arch);坐标(x,y)宽w,高h,长轴arcw,arch的圆角矩形对象。

4.椭圆:Ellipse2D.Double类:new Ellipse2D.Double(double x1,double y1,double w,double h)坐标(x,y )宽w,高h

5.圆弧:new Arc2D.Double(double x1,double y1,double w,double h,double start,double extent,int type) extent正值是逆时针,否则顺时针,start为起始角度。

6.绘制文本:drawString(String s,int x,int y)在参数xy指定左边从左到右绘制s的字符串

7.绘制二次曲线:QuadCurve2D curve=new QuadCurve2D.Double(50,30,10,10,50,100);创建端点(50,30)和(50,100),控制点为(10,10)的二次曲线   二次曲线要3个点

  绘制三次曲线:QuadCurve2D curve=new QuadCurve2D.Double(50,30,10,10,100,100,50,100)创建端点(50,30)和(50,100),控制点为(10,10)和(100,100)的三次曲线,需要4个点

8.绘制多边形:使用java.awt包中的Polygon类:Polygon polygon=new Polygon 创建空多边形,然后调用addPoint(intx,inty)加顶点。

变换图形:

1.AffineTransform类创建一个对象: .AffineTransform trans=new .AffineTransform();对象trans使用以下三个方法实现图形变换操作 :1)translate(double a,double b)将图形在x轴方向移动a个像素单位,a是正则右;y轴b个像素,b正则下;2)scale(double a,double b)将图形在X轴方向缩放a倍,y缩放b;3)rotate(double number,double x,double y)将图形沿顺时针或逆时针方向以(x,y)为轴旋转number个弧度;

2.进行需要的变换:例如把一个矩形绕点(100,100)顺时针旋转60度, trans.rotate(60.0*3.1415927/180,100,100)

3.把Graphis对象 比如g_2d,设置为具有trans功能的画笔:g_2d.setTransform(trans)

图形的布尔运算

或运算public void add(Area r)或运算 得图形的合并;与运算public void intersect(Area r)与运算 图形的重叠部分;

差运算public void subtact(Area rhs)图形一去掉量图形的重叠服务;异或运算exclusiveOr(Area rsh)图形非重叠部分

绘制钟表

如果圆的圆心(0,0),对于圆上一点(x,y),该店按顺时针方向旋转弧度a后的左边(m,n)由公式计算:m=xcos(a)-ysin(a) n=ycos(a)+xsin(a)

绘制图像

使用Graphics绘制图像:

1.加载图像:Java提供了一个toolkit对象,任何组件调用getToolkit()方法返回对象的引用。Toolkit对象调用方法Image getImage(String fileNme)或Image getImage(File file)返回一个image对象,封装参数file指定的图像文件。

2.绘制图像:封装后可以用paint方法绘制,Graphics提供drawImage()。

播放音频:可以编写 .au,.aiff,.wav,.midi,.rfm格式

1.创建File对象:File musicFile=new File(“Hello”);

2.获取URI对象:URI uri=musicFile.toURI();

3.获取URL对象:URL url=uri.toRUL();

4.创建音频对象:AudioClip clip=Applet.newAudioClip(url);

5.播放,循环与停止

clip.play()开始播放;clip.loop()循环播放;clip.stop()停止播放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值