清华大学张思民Java课件第6章

上传人:知****区 文档编号:46865665 上传时间:2021-12-16 格式:PPT 页数:36 大小:2.09MB
返回 下载 相关 举报
清华大学张思民Java课件第6章_第1页
第1页 / 共36页
清华大学张思民Java课件第6章_第2页
第2页 / 共36页
清华大学张思民Java课件第6章_第3页
第3页 / 共36页
点击查看更多>>
资源描述
清华大学张思民Java课件第6章Java语言程序设计第第6 6章章 JavaJava图形与图像图形与图像处理处理清华大学清华大学清华大学张思民Java课件第6章本章内容提要本章内容提要1、图形与图像描绘、图形与图像描绘2、数字图像处理、数字图像处理3、java 3D基础基础清华大学张思民Java课件第6章6.16.1图形与图形的描绘图形与图形的描绘 任何一个图形对象(任何一个图形对象(java.awt.Component的子类)使用的子类)使用java.awt.Grephics类提供类提供的绘图方法就可以画出线条、矩形、圆的绘图方法就可以画出线条、矩形、圆形等图形。该方法为:形等图形。该方法为: public void paint(Graohics g);清华大学张思民Java课件第6章6.1.1 Graphics类类 【例例6-1】 绘制直线、矩形和圆的简单图绘制直线、矩形和圆的简单图形。形。 图6.1 组件的坐标系统 清华大学张思民Java课件第6章Graphics类常用的绘图方法类常用的绘图方法 方方 法法说说 明明drawLine(drawLine(int x1, int y1, int x2, int y2) 绘制一条从绘制一条从(x1,y1)(x1,y1)到到(x2,y2)(x2,y2)的直线的直线drawRect(drawRect(int x, int y, int w, int h) 绘制一个顶点为绘制一个顶点为(x,y)(x,y),宽为,宽为w w,高为,高为h h的矩形的矩形drawOval(drawOval(int x, int y, int w, int h) 绘制一个在顶点为绘制一个在顶点为(x,y)(x,y),宽为,宽为w w,高,高为为h h的矩形内接椭圆的矩形内接椭圆drawArc(int x, int y, int w, int h, int s1, int s2)绘制一段弧度为从绘制一段弧度为从s1到到s1+s2的圆弧的圆弧clearRect(int x1, int y1, int x2, int y2) 用当前颜色填充的方法清除指定矩形用当前颜色填充的方法清除指定矩形区。区。drawString(String s,int x,int y)drawString(String s,int x,int y)在在(x,y)(x,y)处显示字符串处显示字符串s sdrawImage(Image image, int x, int y, ImageObserver observer) 在在(x,y)(x,y)处显示处显示图像图像image, observer为加载图像时的图像观察器为加载图像时的图像观察器drawImage(Image image, int x, int y,int w,int h, ImageObserver observer) 在在w w宽宽h h高的矩形区域内显示图像,图高的矩形区域内显示图像,图像能自动调整大小比例。像能自动调整大小比例。清华大学张思民Java课件第6章 Graphics类的类的Set/get方法方法 getColor()获得当前图形的色彩setColor(Color c)设置当前图形的色彩getFont()获得当前字体setFont(Font font)设置当前字体getClip() 获取当前的剪贴板内容。setClip(int, int, int, int)将指定的矩形设置为当前的剪贴区。清华大学张思民Java课件第6章【例例6-2】 绘制用色彩填充的笑脸绘制用色彩填充的笑脸图形。图形。清华大学张思民Java课件第6章6.1.2 Java 2D 绘制时,只要将绘制时,只要将Graphics 对象强制转化为对象强制转化为Graphics 2D对象就行。对象就行。 graphics类还有一些不足,例如缺少改变线条粗细的方法,也类还有一些不足,例如缺少改变线条粗细的方法,也缺少填充一个对象的方法。缺少填充一个对象的方法。Graphics 2D可以解决这些问题。可以解决这些问题。 清华大学张思民Java课件第6章【例【例6-3】设置线条粗细】设置线条粗细清华大学张思民Java课件第6章6.1.3 画布画布Canvas 画布画布Canvas类是一个用来绘制图类是一个用来绘制图形的矩形组件,在画布中可以象在形的矩形组件,在画布中可以象在Applet中那样绘制各种图形,也可中那样绘制各种图形,也可以响应鼠标和键盘事件。以响应鼠标和键盘事件。 清华大学张思民Java课件第6章1、创建Canvas的构造方法没参数,所以使用的构造方法没参数,所以使用简单的语句就可以创建一个画布对象:简单的语句就可以创建一个画布对象: Canvas canvas1=new Canvas();在创建了在创建了 Canvas对象后,一定要调用对象后,一定要调用setSize()方法确定这个画布的大小。方法确定这个画布的大小。Canvas具有自己的坐标系统,使用布具有自己的坐标系统,使用布局管理器可以确定它在其他组件中的位局管理器可以确定它在其他组件中的位置,并且可以用布局管理器来进行版面置,并且可以用布局管理器来进行版面布局。布局。清华大学张思民Java课件第6章2、常用方法、常用方法 我们在进行程序设计时,经常把要实现我们在进行程序设计时,经常把要实现的功能单独设计为一个类,而把显示这个功的功能单独设计为一个类,而把显示这个功能设计成另一个,我们把实现功能的类称为能设计成另一个,我们把实现功能的类称为业务逻辑层,而显示功能的类称为表现层。业务逻辑层,而显示功能的类称为表现层。这样,把逻辑层和表现层分开,有利于实现这样,把逻辑层和表现层分开,有利于实现代码重用。看下面的示例。代码重用。看下面的示例。【例例6-5】通过一个窗体的文本框输入圆的半通过一个窗体的文本框输入圆的半径及坐标位置,在画布上绘制一个圆。以此径及坐标位置,在画布上绘制一个圆。以此例说明,逻辑层和表现层间的数据传递。例说明,逻辑层和表现层间的数据传递。清华大学张思民Java课件第6章 (b) 在画布上绘制圆形图图6.6 逻辑层与表现层的设计模式示例逻辑层与表现层的设计模式示例 (a) 逻辑层和表现层间的数据传递清华大学张思民Java课件第6章6.2 数字图像处理数字图像处理 数字图像处理技术就是将图像信号转数字图像处理技术就是将图像信号转换成数字格式并利用计算机进行处理的换成数字格式并利用计算机进行处理的过程。过程。 我们要用到我们要用到awt的的Image类和类和java.awt.image包,包,awt的抽象类的抽象类Image所所有图形图像类的父类,有图形图像类的父类,java.awt.image包包为创建和修改图像提供了技术支持。为创建和修改图像提供了技术支持。 清华大学张思民Java课件第6章6.2.1 图像文件图像文件 例:(1)单一灰色(2)渐变灰度。清华大学张思民Java课件第6章6.2.2 图像的基本操作图像的基本操作 图像最基本的操作有三种,它们是创建图像、加载图像和显示图像。1、 创建图像对象 由于图像最终要在屏幕中显示出来,java.awt的Component类提供了一个createImage()方法来生成Image图像对象。 CreateImage()方法有两种形式: Image createImage(ImageProducer imgProd) ; Image createImage(int width, int height) ; 清华大学张思民Java课件第6章2、 加载图像 获得图像的另一种方法是加载图像。这通过使用由Applet类定义的getImage()方法来实现。它有以下形式: Image getImage(URL url) Image getImage(URL url, String imageName) 清华大学张思民Java课件第6章3、显示图像 显示图像可以用drawImage()方法,drawImage()是Graphics类的方法。它有好几种形式,我们将要用到下面的一种: boolean drawImage(Image imgObj, int left, int top, ImageObserver imgOb) ;清华大学张思民Java课件第6章【例例6-8】用用getImage()方法和方法和drawImage()方法加载和显示图像。方法加载和显示图像。清华大学张思民Java课件第6章6.2.3 双双 缓缓 冲冲 由于加载图像需要时间,这时我们就会感觉屏幕在不断闪烁。 为了解决这个问题,在内存或显存中开辟一块缓冲区,把加载的图像放到缓冲区中。当图像加载完毕,我们再把图像从缓冲区中调到屏幕上让它显示,由于从缓冲区读取数据的速度很快就不会出现闪烁了。这就称为双缓冲。清华大学张思民Java课件第6章【例例6-9】演示双缓冲技术的效果。演示双缓冲技术的效果。我们创建了一个Image对象,然后在这个Image对象上(而不是在屏幕上)画图。画图需要用一个Graphics对象。这个Graphics对象可以通过getGraphics()方法来获得。下面构造一个Graphics对象gc,并用红色填充图像。 Canvas c = new Canvas(); Image test = c.createImage(200, 100); Graphics gc = test.getGraphics(); gc.setColor(Color.red); gc.fillRect(0, 0, 200, 100); 这个图像是不可见的,仅仅存在于内存中。为了真正显示这个图像,需调用drawImage()方法。清华大学张思民Java课件第6章6.2.4 图像处理技术图像处理技术 1、像素点数组的构成清华大学张思民Java课件第6章像素点是一个具有Alpha(透明度)、Red(红)、Green(绿)和Blue(蓝)四个分量表示的整数,记作0 xAARRGGBB。其中A、R、G、B的取值从0f(十六进制)。红色:0 xffff0000 绿色:0 xff00ff00 蓝色:0 xff0000ff 白色:0 xffffffff 黑色: 0 xff000000 图像的像素点其排列如图6.14所示,我们按从左往右、从上往下的顺序取出像素点,构成一整型数组。清华大学张思民Java课件第6章图图6.14像素数组元素的排列像素数组元素的排列清华大学张思民Java课件第6章2、 MediaTracker类类MediaTracker类用于加载多媒体图像,使用时,先生成一个MediaTracker对象,再用它的addImage()方法来加载图像。addImage()方法有以下一般形式: void addImage(Image imgObj, int imgID) void addImage(Image imgObj, int imgID, int width, int height) 清华大学张思民Java课件第6章3、ImageProducer接口和接口和MemoryImageSource 类类 ImagePruducer是一个用于生成图像数据对象的接口。实现该接口的对象要用整数型数组或字节型数组生成Image对象。 MemoryImageSource是用于生成新的图像的类。它的构造函数如下: MemoryImageSource(int width, int height, int pixel , int offset, int scanLineWidth) 清华大学张思民Java课件第6章4、PixelGrabber类类PixelGrabber类的作用是从现有的图像中提取像素数据构造一个像素数组。在使用PixelGrabber时,首先需要生成一个足够大的int型的数组来存储像素数据,然后生成一个PixelGrabber实例对象,将提取到的图像数据存入到一个矩形区域中。最后,这个实例对象中调用grabPixels()方法将数据值放进像素数组中。 清华大学张思民Java课件第6章【例例6-11】将图像进行反相处理示例。将图像进行反相处理示例。清华大学张思民Java课件第6章6.3.1 Java 3D概述概述Java 3D的安装和运行 :到其官方网站:下载最新的系统安装程序。Java 3D安装完毕后,在JDK目录下的jrelibext子目录下,应有四个.jar文件:j3daudio.jar、j3dcore.jar、j3dutils.jar、vecmath.jar,在JDK目录下的jrebin子目录下,应有J3D.dll、j3daudio.dll、J3DUtils.dll文件。另外,在demo目录下的java3d中有系统提供的示例程序。 清华大学张思民Java课件第6章6.3.2 Java 3D程序设计程序设计 1、Java 3D的基本体系结构清华大学张思民Java课件第6章2、几个基本概念、几个基本概念(1)虚拟空间在Java3D中,虚拟空间被定义为结合一系列对象的三维空间。虚拟空间被用作最大的聚集体表现单位,同时也可被看作一个数据库。对于一个Java3D应用程序,必须定义一个虚拟空间才可以在“空间”中显示三维图像。清华大学张思民Java课件第6章(2)坐标系统默认情况下,Java3D的坐标系统是右旋的三维坐标体系 (3)场景为了支持大型虚拟空间,Java3D提出了“场景Locale”的概念。一个场景和与它结合的坐标系一起组成了在虚拟空间之下的一个表现层。虚拟空间可以包含一个或多个场景。而所有其他的对象都附加在一个场景之中。清华大学张思民Java课件第6章3、Java 3D设计方法设计方法构造一个Java 3D应用程序,必须首先创建一个虚拟空间对象并且至少把一个Locale场景对象附加之上。然后,构建出需要的场景图像,它由一个分支组结点开始并且包括至少一个观察平台对象,而场景图就是附加于这个观察平台。当一个包含场景图的观察对象被附加于一个虚拟空间,Java3D的渲染循环就开始工作。这样,场景就会和它的观察对象一起被绘制在画布(Canvas 3D)上。清华大学张思民Java课件第6章【例例6-12】最简单的最简单的Java 3D程序。程序。清华大学张思民Java课件第6章总结总结 本章的内容比较多,请教师根据教学时数的情况,选讲部分内容。THANK YOU感谢聆听,批评指导2020
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!