收藏 分销(赏)

第7章图形图像和多媒体-java语言基础自考教学.ppt

上传人:快乐****生活 文档编号:14648119 上传时间:2026-10-25 格式:PPT 页数:45 大小:1.63MB 下载积分:10 金币
下载 相关
第7章图形图像和多媒体-java语言基础自考教学.ppt_第1页
第1页 / 共45页
第7章图形图像和多媒体-java语言基础自考教学.ppt_第2页
第2页 / 共45页


点击查看更多>>
资源描述
单击鼠标编辑标题文的格式,单击鼠标编辑大纲正文格式,第二个大纲级,第三个大纲级,第四个大纲级,第五个大纲级,第六个大纲级,第七个大纲级,第八个大纲级,第九个大纲级,图形、图象与多媒体,本章重点,设置字型,设置颜色,几何图形绘制方法,图像显示技术基础,绘图基础,基本图形包括点、线、圆、矩形等,是构成复杂图形的基础。绘制基本图形要使用,AWT,中的,Graphics,类,它提供了各种基本图形的绘制方法,可以直接引用这些方法。,确定平面坐标系,坐标原点(,0,,,0,)位于整个区域的左上角。一个坐标点对应屏幕上的一个像素,必须是整数。,Graphics,类的基本功能,java.awt,包中的,Graphics,提供建立字体、设定颜色、显示图像、文本、绘制和填充各种图形的功能。,Graphics2D,类继承,Graphics,提供更多的状态和属性,使应用程序能绘制出更加丰富多彩的图形。,要在某个组件中绘图,需要在这个组件所属的类中重写,paint(),方法,在该方法中绘图。,如果要在,JComponent,子类的组件中绘图,则需重写,paintComponent,(),方法,自型和颜色,绘制文本的方法有三种:,在指定的位置绘制字符串,drawString(String str,int x,int y),g.drawString(,中国,Wxyz,10,60);,10,60,字型和颜色,Java,中使用,Color,类设置颜色,生成颜色的方法有两种。,使用预定义的颜色:,Color.RED,Color.YELLOW,等,通过红绿蓝,(RGB),的值合成颜色,例如使用,3,个,0-255,的整数创建对象,Color c=new Color(255,0,0);,绘图时使用,Graphics,对象的,setColor(),方法设置颜色,使用,Component,对象的,setBackground(),方法设置背景色。,绘图模式,绘图模式指绘制的图形与之前绘制的图形有重叠时,重叠部分的颜色如何确定。,正常模式:后绘制的图形覆盖原先的图形。,setPaintMode,(),异或模式:将正要绘图的颜色、原先图形的颜色和设定的颜色做特定的运算,得到实际的绘图颜色。,setXORMode,(),g.setColor(Color.,BLUE,);,g.drawString(dsbdsfsfs,20,50);,g.setColor(Color.,YELLOW,);,g.fillRect(10,10,100,50);,g.setColor(Color.,BLUE,);,g.drawString(dsbdsfsfs,20,50);,g.setColor(Color.,YELLOW,);,g.fillRect(10,10,100,50);,XOR,绘图模式,setBackground(Color.,yellow,);/,设此颜色为,B,g.setXORMode(Color.,red,);/,设此颜色为,C,g.setColor(Color.,green,);/,设此颜色为,D,规则,1,:用背景色画图出现设置的颜色,C,B+B=C,setBackground(Color.yellow);,g.setXORMode(Color.red);,g.setColor(Color.YELLOW);,g.fillRect(20,20,80,40);,红色,XOR,绘图模式,规则,3,:背景色和绘图颜色不一样时,为两者的混合色,B+D=B,和,D,的混合色,setBackground(Color.yellow);,g.setXORMode(Color.red);,g.setColor(Color.BLUE);,g.fillRect(20,20,80,40);,黄,+,蓝,XOR,绘图模式,规则,4,:某区已经用,D,着色,再用,E,着色,D+E=B,和,E,的混合色,(B,和,E,不同,),setBackground(Color.yellow);,g.setXORMode(Color.red);,g.setColor(Color.BLUE);,g.fillRect(20,20,80,40);,g.setColor(Color.GREEN);,g.fillRect(20,20,40,40);,黄,+,蓝,+,绿,Graphics,的绘图方法,三维矩形,draw3DRect(intx,inty,intwidth,intheight,booleanraised),fill3DRect(intx,inty,intwidth,intheight,booleanraised),raised,为,true,表示突出的,,false,是凹陷的,画椭圆,drawOval(int x,int y,int width,int height),fillOval(int x,int y,int width,int height),画以(,x,y,)为原点,即矩形的左上角,宽为,width,,高为,height,的矩形的内切椭圆。,Graphics,的绘图方法,画多边形,drawPolygon(intxPoints,intyPoints,intnPoints),fillPolygon(intxPoints,intyPoints,intnPoints),int px1=50,90,10,50;,int py1=10,50,50,10;,g.fillPolygon(px1,py1,4);,(,50,10,),(,90,50,),(,10,50,),Graphics,的绘图方法,使用,Polygon,类创建多边形。,Polygon p=new Polygon();,p.addPoint(50,10);,p.addPoint(90,50);,p.addPoint(10,50);,p.addPoint(50,10);,g.fillPolygon(p);,(,50,10,),(,90,50,),(,10,50,),clipRect,限定作图显示区域,区域内的图形可以显示,clipRect(intx,inty,intwidth,intheight),g.setColor(Color.YELLOW);,g.fillRect(10,10,100,100);,g.clipRect(20,20,50,50);,g.setColor(Color.YELLOW);,g.fillRect(10,10,100,100);,复制图形,copyArea(intx,inty,intwidth,intheight,intdx,intdy),x-,源矩形的,x,坐标。,y-,源矩形的,y,坐标。,width-,源矩形的宽度。,height-,源矩形的高度。,dx-,水平偏移,右为正,左为负,dy-,垂直偏移,下为正,上为负,g.setColor(Color.YELLOW);,g.fillRect(0,0,100,100);,g.setColor(Color.red);,g.drawRect(30,30,50,50);,g.copyArea(30,30,50,50,100,100);,paint,,,repaint,,,update,方法,paint:,应该绘制组件的内容时调用此方法;,组件第一次在屏幕上显示,组件的大小改变了,部件显示的内容受损需要维护。,(,比如,先前挡住组件的其它物体移走了,于是组件被挡住的部分曝露出来),repaint:,对于重量级组件,(JFrame,JApplet,JDialog,和,awt,组件,),,先调用,update,方法,在,update,方法中实现部分图形的修改,然调用,paint,方法。对于轻量级,(JComponent,的子孙,),组件调用,paint,方法,Graphics2D,类的绘图方法,java.awt.Graphics2D,拥有更强大二维的图形处理能力,提供坐标变换、颜色管理以及文字布局等更精确的控制。,public abstract class Graphics2D,extends Graphics,public void paint(Graphics g),Graphics2D g2d=(Graphics2D)g;,Line2D line=new Line2D.Double(30.0,10.0,180.0,10.0);,g2d.draw(line);,BasicStroke bs=new,BasicStroke(20f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND);,g2d.setStroke(bs);,Line2D line2=new Line2D.Double(30.0,40.0,180.0,40.0);,g2d.draw(line2);,bs=new,BasicStroke(20f,BasicStroke.,CAP_SQUARE,BasicStroke.JOIN_ROUND);,g2d.setStroke(bs);,Line2D line3=new Line2D.Double(30.0,80.0,180.0,80.0);,g2d.draw(line3);,bs=new,BasicStroke(20f,BasicStroke.,CAP_ROUND,BasicStroke.JOIN_ROUND);,g2d.setStroke(bs);,Line2D line4=new Line2D.Double(30.0,120.0,180.0,120.0);,g2d.draw(line4);,public void paint(Graphics g),bs=new,BasicStroke(20f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND,);,g2d.setStroke(bs);,int x=30,160,200;,int y=160,400,200;,g2d.setColor(Color.GREEN);,g2d.drawPolygon(x,y,3);,JOIN_ROUND,JOIN_MITER,JOIN_BEVEL,paint,属性,paint,属性控制填充效果。,BasicStroke bs=new BasicStroke(5.5f);,g2d.setStroke(bs);,GradientPaint gp=new GradientPaint(30.0f,30.0f,Color.RED,180.0f,30.0f,Color.GREEN);,g2d.setPaint(gp);,Line2D line=new Line2D.Double(30.0,30.0,180.0,30.0);,g2d.draw(line);,transform,属性,缩放,AffineTransform scale=,AffineTransform.getScaleInstance(2,2);,g2d.setTransform(,scale,);,Line2D line=new Line2D.Double(30.0,30.0,180.0,30.0);,g2d.draw(line);,transform,属性,平移,AffineTransform transform=,AffineTransform.getTranslateInstance(10,50);,g2d.setTransform(,transform,);,Line2D line=new Line2D.Double(30.0,30.0,180.0,30.0);,g2d.draw(line);,clipe,属性,clipe,属性用于实现剪裁的效果,区域内可见,Line2D line=new Line2D.Double(30.0,30.0,180.0,30.0);,g2d.setClip(30,30,160,30);,g2d.draw(line);,Composit,属性,Composit,设置图形重叠区的效果,AlphaComposite a=,AlphaComposite.getInstance(int rule,,,float alpha);,Alpha,为,0,表示透明,,1.0,表示不透明,Graphics2D,的绘图方法,Graphics2D,类保留了,Graphics,类的绘图方法,同时增加了一些新方法。新方法把几何形状作为对象来绘制,在,java.awt.geom,包中声明的一系列类,分别用于创建各种几何图形。,public void paint(Graphics g),/,将参数,g,强制类型转换成,Graphics2D,类型,Graphics2D g2d=(Graphics2D)g;,/,使用图形类的静态,Double,方法创建几何图形对象,Line2D line=new Line2D.Double(30.0,30.0,180.0,30.0);,/,以图形对象为参数,调用,Graphics2D,对象的,draw,方法绘制图形,g2d.draw(line);,Graphics2D,的几何图形类,线段,起点(,30,,,30,),终点,(180,,,30),Line2D line=new Line2D.Double(30,30,180,30);,g2d.draw(line);,public abstract class Line2D implements Shape,Cloneable,public static class Double extends Line2D,public Double(double X1,double Y1,double X2,double Y2),.,Graphics2D,的几何图形类,矩形,左上角点坐标(,20,20,),宽,100,,高,50,Rectangle2D rect=new Rectangle2D.Double(20,20,100,50);,g2d.draw(rect);,g2d.fill(rect);,Graphics2D,的几何图形类,圆角矩形,左上角点坐标(,20,20,),宽,100,,高,50,,圆角横向直径,20,,纵向直径,40,RoundRectangle2D roundRect=new,RoundRectangle2D.Double(20,20,100,50,20,40);,g2d.draw(roundRect);,Graphics2D,的几何图形类,椭圆,左上角点(,20,30,),宽,100,,高,50,矩形的内切椭圆,Ellipse2D ellipse=new Ellipse2D.Double(20,30,100,50);,g2d.draw(ellipse);,Graphics2D,的几何图形类,圆弧,左上角坐标(,20,30,),宽,100,,高,50,矩形的内切圆弧,,90,度开始,,逆时针转,90,度,Arc2D arc=new Arc2D.Double(20,30,100,50,90,90,Arc2D.OPEN,);,g2d.draw(arc);,Arc2D arc2=new Arc2D.Double(20,30,100,50,0,-90,Arc2D.CHORD,);,g2d.draw(arc2);,Arc2D arc3=new Arc2D.Double(20,30,100,50,0,90,Arc2D.PIE,);,g2d.draw(arc3);,二次曲线,一条二次曲线需要三个点确定:始点、控制点和终点,起点(,20,10,),控制点(,90,65,),终点(,55,115,),QuadCurve2D qc=new,QuadCurve2D.Double(20,10,90,65,55,115);,QuadCurve2D qc2=new QuadCurve2D.Double(20,10,15,63,55,115);,QuadCurve2D qc3=new QuadCurve2D.Double(20,10,54,64,55,115);,g2d.draw(qc);,g2d.draw(qc2);,g2d.draw(qc3);,三次曲线,一条三次曲线需要四个点确定:始点、两个控制点和终点,起点(,12,30,),控制点(,50,75,),(,15,15,),终点(,115,93,),CubicCurve2D c1=new,CubicCurve2D.Double(12,30,50,75,15,15,115,93);,CubicCurve2D c2=new,CubicCurve2D.Double(12,30,15,70,20,25,35,94);,CubicCurve2D c3=new,CubicCurve2D.Double(12,30,50,75,20,95,95,95);,g2d.draw(c1);,g2d.draw(c2);,g2d.draw(c3);,图像处理基础,图像是由一组像素构成,用二进制形式保存的图片。,Java,语言支持,GIF,JPEG,BMP,这三种图像文件格式。,Java,语言的图像处理功能被封装在,Image,中。,图像的载入和绘制,public class ImageDemo extends Applet,public void paint(Graphics g),/,图像位置为,Applet,所在文件夹下的,pic,子文件夹下的,gugu3.gif,Image image,=,g,etImage(getCodeBase(),picgugu3.gif);,/,在当前窗口坐标,(10,10),的位置绘制图像,g.drawImage(image,10,10,this);,图像的载入和绘制,public class ImageDemo extends Applet,public void paint(Graphics g),URL url=null;,try,url=new URL(this.getCodeBase(),picgugu3.gif);,catch(MalformedURLException e),e.printStackTrace();,Image image =,getImage(url);,g.drawImage(image,10,10,this);,图像缓冲,把图像装入内存,在缓冲区中绘制图像或图形,然后将缓冲区中绘制好的图像一次性输出到屏幕上。,Image,OffScreen=createImage(width,height);/,建立,off-screen,图像,Graphics,drawOffScreen=OffScreen.getGraphics();/,获得图像的画笔,drawOffScreen.setColor(Color.white);,drawOffScreen.fillOval(X,Y,50,50);/,在,off-screen,上画图,g.drawImage(OffScreen,0,0,this);/,将,off-screen,图像绘制到当前组件上,播放声音,Java,支持的音频格式有:,au,、,aiff,、,wav,、,midi,、,rfm,等。,小程序要播放音频文件,使用,java.applet.AudioClip,类。,AudioClip clip,=,getAudioClip(getCodeBase(),Windows XP 关机.wav);,clip.play();/,播放,clip.stop();/,停止,clip.loop();/,循环播放,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 自考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服