第十四章 图形、图像与音频
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()停止播放