清华大学张思民Java课件第章专题培训课件_第1页
清华大学张思民Java课件第章专题培训课件_第2页
清华大学张思民Java课件第章专题培训课件_第3页
清华大学张思民Java课件第章专题培训课件_第4页
清华大学张思民Java课件第章专题培训课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

清华大学张思民Java课件第6章PPT讲座本章内容提要1、图形与图像描绘2、数字图像处理3、java3D基础6.1

图形与图形的描绘任何一个图形对象(java.awt.Component的子类)使用java.awt.Grephics类提供的绘图方法就可以画出线条、矩形、圆形等图形。该方法为:

publicvoidpaint(Graohicsg);6.1.1Graphics类【例6-1】绘制直线、矩形和圆的简单图形。

图6.1组件的坐标系统Graphics类常用的绘图方法方法说明drawLine(intx1,inty1,intx2,inty2)绘制一条从(x1,y1)到(x2,y2)的直线drawRect(intx,inty,intw,inth)绘制一个顶点为(x,y),宽为w,高为h的矩形drawOval(intx,inty,intw,inth)绘制一个在顶点为(x,y),宽为w,高为h的矩形内接椭圆drawArc(intx,inty,intw,inth,ints1,ints2)绘制一段弧度为从s1到s1+s2的圆弧clearRect(intx1,inty1,intx2,inty2)用当前颜色填充的方法清除指定矩形区。drawString(Strings,intx,inty)在(x,y)处显示字符串sdrawImage(Imageimage,intx,inty,ImageObserverobserver)在(x,y)处显示图像image,observer为加载图像时的图像观察器drawImage(Imageimage,intx,inty,intw,inth,ImageObserverobserver)在w宽h高的矩形区域内显示图像,图像能自动调整大小比例。

Graphics类的Set/get方法getColor()获得当前图形的色彩setColor(Colorc)设置当前图形的色彩getFont()获得当前字体setFont(Fontfont)设置当前字体getClip()获取当前的剪贴板内容。setClip(int,int,int,int)将指定的矩形设置为当前的剪贴区。【例6-2】绘制用色彩填充的笑脸图形。6.1.2Java2D绘制时,只要将Graphics对象强制转化为Graphics2D对象就行。

graphics类还有一些不足,例如缺少改变线条粗细的方法,也缺少填充一个对象的方法。Graphics2D可以解决这些问题。

【例6-3】设置线条粗细6.1.3画布Canvas画布Canvas类是一个用来绘制图形的矩形组件,在画布中可以象在Applet中那样绘制各种图形,也可以响应鼠标和键盘事件。

1、创建

Canvas的构造方法没参数,所以使用简单的语句就可以创建一个画布对象:

Canvascanvas1=newCanvas();在创建了Canvas对象后,一定要调用setSize()方法确定这个画布的大小。

Canvas具有自己的坐标系统,使用布局管理器可以确定它在其他组件中的位置,并且可以用布局管理器来进行版面布局。2、常用方法我们在进行程序设计时,经常把要实现的功能单独设计为一个类,而把显示这个功能设计成另一个,我们把实现功能的类称为业务逻辑层,而显示功能的类称为表现层。这样,把逻辑层和表现层分开,有利于实现代码重用。看下面的示例。【例6-5】通过一个窗体的文本框输入圆的半径及坐标位置,在画布上绘制一个圆。以此例说明,逻辑层和表现层间的数据传递。

(b)在画布上绘制圆形图6.6逻辑层与表现层的设计模式示例

(a)逻辑层和表现层间的数据传递6.2数字图像处理数字图像处理技术就是将图像信号转换成数字格式并利用计算机进行处理的过程。我们要用到awt的Image类和java.awt.image包,awt的抽象类Image所有图形图像类的父类,java.awt.image包为创建和修改图像提供了技术支持。6.2.1图像文件例:(1)单一灰色(2)渐变灰度。6.2.2图像的基本操作图像最基本的操作有三种,它们是创建图像、加载图像和显示图像。1、创建图像对象由于图像最终要在屏幕中显示出来,java.awt的Component类提供了一个createImage()方法来生成Image图像对象。

CreateImage()方法有两种形式:

ImagecreateImage(ImageProducerimgProd);ImagecreateImage(intwidth,intheight);

2、加载图像获得图像的另一种方法是加载图像。这通过使用由Applet类定义的getImage()方法来实现。它有以下形式:ImagegetImage(URLurl)ImagegetImage(URLurl,StringimageName)3、显示图像显示图像可以用drawImage()方法,drawImage()是Graphics类的方法。它有好几种形式,我们将要用到下面的一种:booleandrawImage(ImageimgObj,intleft,inttop,ImageObserverimgOb);【例6-8】用getImage()方法和drawImage()方法加载和显示图像。6.2.3双缓冲由于加载图像需要时间,这时我们就会感觉屏幕在不断闪烁。为了解决这个问题,在内存或显存中开辟一块缓冲区,把加载的图像放到缓冲区中。当图像加载完毕,我们再把图像从缓冲区中调到屏幕上让它显示,由于从缓冲区读取数据的速度很快就不会出现闪烁了。这就称为双缓冲。【例6-9】演示双缓冲技术的效果。6.2.4图像处理技术1、像素点数组的构成像素点是一个具有Alpha(透明度)、Red(红)、Green(绿)和Blue(蓝)四个分量表示的整数,记作0xAARRGGBB。其中A、R、G、B的取值从0~f(十六进制)。红色:0xffff0000绿色:0xff00ff00蓝色:0xff0000ff白色:0xffffffff黑色:0xff000000图像的像素点其排列如图6.14所示,我们按从左往右、从上往下的顺序取出像素点,构成一整型数组。图6.14像素数组元素的排列2、MediaTracker类MediaTracker类用于加载多媒体图像,使用时,先生成一个MediaTracker对象,再用它的addImage()方法来加载图像。addImage()方法有以下一般形式:voidaddImage(ImageimgObj,intimgID)voidaddImage(ImageimgObj,intimgID,intwidth,intheight)3、ImageProducer接口和MemoryImageSource类ImagePruducer是一个用于生成图像数据对象的接口。实现该接口的对象要用整数型数组或字节型数组生成Image对象。MemoryImageSource是用于生成新的图像的类。它的构造函数如下:MemoryImageSource(intwidth,intheight,intpixel[],intoffset,intscanLineWidth)4、PixelGrabber类PixelGrabber类的作用是从现有的图像中提取像素数据构造一个像素数组。在使用PixelGrabber时,首先需要生成一个足够大的int型的数组来存储像素数据,然后生成一个PixelGrabber实例对象,将提取到的图像数据存入到一个矩形区域中。最后,这个实例对象中调用grabPixels()方法将数据值放进像素数组中。【例6-11】将图像进行反相处理示例。6.3.1Java3D概述6.3.2Java3D程序设计1、Java3D的基本体系结构2、几个基本概念(1)虚拟空间在Java3D中,虚拟空间被定义为结合一系列对象的三维空间。虚拟空间被用作最大的聚集体表现单位,同时也可被看作一个数据库。对于一个Java3D应用程序,必须定义一个虚拟空间才可以在“空间”中显示三维图像。(2)坐标系统默认情况下,Java3D的坐标系统是右旋的三维坐标体系(3)场景为了支持大型虚拟空间,Java3D提出了“场景Locale”的概念。一个场景和与它结合的坐标系一起组成了在虚拟空间之下的一个表现层。虚拟空间可以包含一个或多个场景。而所有其他的对象都附加在一个场景之中。3、Java3D设计方法构造一个Java3D应用程序,必须

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论