版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、清华大学张思民Java课件第6章Java语言程序设计第第6 6章章 JavaJava图形与图像图形与图像处理处理清华大学清华大学清华大学张思民Java课件第6章本章内容提要本章内容提要1、图形与图像描绘、图形与图像描绘2、数字图像处理、数字图像处理3、java 3D基础基础清华大学张思民Java课件第6章6.16.1图形与图形的描绘图形与图形的描绘 任何一个图形对象(任何一个图形对象(java.awt.Component的子类)使用的子类)使用java.awt.Grephics类提供类提供的绘图方法就可以画出线条、矩形、圆的绘图方法就可以画出线条、矩形、圆形等图形。该方法为:形等图形。该方法为
2、: 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
3、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) 用当前颜色填充的方法清除指定
4、矩形用当前颜色填充的方法清除指定矩形区。区。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 ob
5、server) 在在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】 绘制用色彩填充的笑脸绘制用色彩填充的笑脸图
6、形。图形。清华大学张思民Java课件第6章6.1.2 Java 2D 绘制时,只要将绘制时,只要将Graphics 对象强制转化为对象强制转化为Graphics 2D对象就行。对象就行。 graphics类还有一些不足,例如缺少改变线条粗细的方法,也类还有一些不足,例如缺少改变线条粗细的方法,也缺少填充一个对象的方法。缺少填充一个对象的方法。Graphics 2D可以解决这些问题。可以解决这些问题。 清华大学张思民Java课件第6章【例【例6-3】设置线条粗细】设置线条粗细清华大学张思民Java课件第6章6.1.3 画布画布Canvas 画布画布Canvas类是一个用来绘制图类是一个用来绘制图
7、形的矩形组件,在画布中可以象在形的矩形组件,在画布中可以象在Applet中那样绘制各种图形,也可中那样绘制各种图形,也可以响应鼠标和键盘事件。以响应鼠标和键盘事件。 清华大学张思民Java课件第6章1、创建Canvas的构造方法没参数,所以使用的构造方法没参数,所以使用简单的语句就可以创建一个画布对象:简单的语句就可以创建一个画布对象: Canvas canvas1=new Canvas();在创建了在创建了 Canvas对象后,一定要调用对象后,一定要调用setSize()方法确定这个画布的大小。方法确定这个画布的大小。Canvas具有自己的坐标系统,使用布具有自己的坐标系统,使用布局管理器
8、可以确定它在其他组件中的位局管理器可以确定它在其他组件中的位置,并且可以用布局管理器来进行版面置,并且可以用布局管理器来进行版面布局。布局。清华大学张思民Java课件第6章2、常用方法、常用方法 我们在进行程序设计时,经常把要实现我们在进行程序设计时,经常把要实现的功能单独设计为一个类,而把显示这个功的功能单独设计为一个类,而把显示这个功能设计成另一个,我们把实现功能的类称为能设计成另一个,我们把实现功能的类称为业务逻辑层,而显示功能的类称为表现层。业务逻辑层,而显示功能的类称为表现层。这样,把逻辑层和表现层分开,有利于实现这样,把逻辑层和表现层分开,有利于实现代码重用。看下面的示例。代码重用
9、。看下面的示例。【例例6-5】通过一个窗体的文本框输入圆的半通过一个窗体的文本框输入圆的半径及坐标位置,在画布上绘制一个圆。以此径及坐标位置,在画布上绘制一个圆。以此例说明,逻辑层和表现层间的数据传递。例说明,逻辑层和表现层间的数据传递。清华大学张思民Java课件第6章 (b) 在画布上绘制圆形图图6.6 逻辑层与表现层的设计模式示例逻辑层与表现层的设计模式示例 (a) 逻辑层和表现层间的数据传递清华大学张思民Java课件第6章6.2 数字图像处理数字图像处理 数字图像处理技术就是将图像信号转数字图像处理技术就是将图像信号转换成数字格式并利用计算机进行处理的换成数字格式并利用计算机进行处理的过
10、程。过程。 我们要用到我们要用到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类提供了一个
11、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
12、、显示图像 显示图像可以用drawImage()方法,drawImage()是Graphics类的方法。它有好几种形式,我们将要用到下面的一种: boolean drawImage(Image imgObj, int left, int top, ImageObserver imgOb) ;清华大学张思民Java课件第6章【例例6-8】用用getImage()方法和方法和drawImage()方法加载和显示图像。方法加载和显示图像。清华大学张思民Java课件第6章6.2.3 双双 缓缓 冲冲 由于加载图像需要时间,这时我们就会感觉屏幕在不断闪烁。 为了解决这个问题,在内存或显存中开辟一块缓冲区
13、,把加载的图像放到缓冲区中。当图像加载完毕,我们再把图像从缓冲区中调到屏幕上让它显示,由于从缓冲区读取数据的速度很快就不会出现闪烁了。这就称为双缓冲。清华大学张思民Java课件第6章【例例6-9】演示双缓冲技术的效果。演示双缓冲技术的效果。我们创建了一个Image对象,然后在这个Image对象上(而不是在屏幕上)画图。画图需要用一个Graphics对象。这个Graphics对象可以通过getGraphics()方法来获得。下面构造一个Graphics对象gc,并用红色填充图像。 Canvas c = new Canvas(); Image test = c.createImage(200, 1
14、00); 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 xffff00
15、00 绿色: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
16、, 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, i
17、nt scanLineWidth) 清华大学张思民Java课件第6章4、PixelGrabber类类PixelGrabber类的作用是从现有的图像中提取像素数据构造一个像素数组。在使用PixelGrabber时,首先需要生成一个足够大的int型的数组来存储像素数据,然后生成一个PixelGrabber实例对象,将提取到的图像数据存入到一个矩形区域中。最后,这个实例对象中调用grabPixels()方法将数据值放进像素数组中。 清华大学张思民Java课件第6章【例例6-11】将图像进行反相处理示例。将图像进行反相处理示例。清华大学张思民Java课件第6章6.3.1 Java 3D概述概述Java
18、 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、几个基本概念、几个基本概念(
19、1)虚拟空间在Java3D中,虚拟空间被定义为结合一系列对象的三维空间。虚拟空间被用作最大的聚集体表现单位,同时也可被看作一个数据库。对于一个Java3D应用程序,必须定义一个虚拟空间才可以在“空间”中显示三维图像。清华大学张思民Java课件第6章(2)坐标系统默认情况下,Java3D的坐标系统是右旋的三维坐标体系 (3)场景为了支持大型虚拟空间,Java3D提出了“场景Locale”的概念。一个场景和与它结合的坐标系一起组成了在虚拟空间之下的一个表现层。虚拟空间可以包含一个或多个场景。而所有其他的对象都附加在一个场景之中。清华大学张思民Java课件第6章3、Java 3D设计方法设计方法构造
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮阴师范学院《数据库原理及应用》2021-2022学年期末试卷
- 淮阴师范学院《软件工程综合设计》2021-2022学年期末试卷
- 淮阴工学院《软件测试与质量保证II》2022-2023学年期末试卷
- 淮阴师范学院《常微分方程》2023-2024学年第一学期期末试卷
- 淮阴工学院《中国古代文学作品选读》2022-2023学年第一学期期末试卷
- 淮阴工学院《信号与系统1》2022-2023学年第一学期期末试卷
- DB4403T449-2024废玻璃分类回收利用规范
- 缩孔控制培训
- 污水处理中的煤制气排放处理技术考核试卷
- 水产品行业市场定位与目标市场考核试卷
- 20世纪时尚流行文化智慧树知到期末考试答案章节答案2024年浙江理工大学
- 国开(甘肃)2024年春《地域文化(专)》形考任务1-4终考答案
- (高清版)JTGT 3331-04-2023 多年冻土地区公路设计与施工技术规范
- 增值服务具体方案怎么写范文
- 企业评标专家推荐表
- 放射性口腔粘膜炎的发病机制及危险因素
- 美能达807si相机中文说明书
- 莆田市人教版四年级数学上册期中测试卷
- 县人大常委会预算审查监督暂行办法
- 执法办案区域工作台账[表格借鉴]
- 苏州大学附属第一医院电子病历应用管理制度
评论
0/150
提交评论