【文档说明】第6章Java图形与图像处理课件.ppt,共(37)页,1.180 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45198.html
以下为本文档部分文字说明:
第6章Java图形与图像处理本章内容提要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,inty
2)绘制一条从(x1,y1)到(x2,y2)的直线drawRect(intx,inty,intw,inth)绘制一个顶点为(x,y),宽为w,高为h的矩形drawOval(intx,inty,intw,inth)绘制一个在顶点为(x,y),宽为w,高为h的矩形内接椭圆drawArc(int
x,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,i
ntx,inty,intw,inth,ImageObserverobserver)在w宽h高的矩形区域内显示图像,图像能自动调整大小比例。Graphics类的Set/get方法getColor()获得当前图形
的色彩setColor(Colorc)设置当前图形的色彩getFont()获得当前字体setFont(Fontfont)设置当前字体getClip()获取当前的剪贴板内容。setClip(int,int,int,in
t)将指定的矩形设置为当前的剪贴区。【例6-2】绘制用色彩填充的笑脸图形。6.1.2Java2D绘制时,只要将Graphics对象强制转化为Graphics2D对象就行。graphics类还有一些不足,例如缺少改变线条粗细的方法,也缺少填充一个对象的方法。Graphics2
D可以解决这些问题。【例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类定义的getI
mage()方法来实现。它有以下形式:ImagegetImage(URLurl)ImagegetImage(URLurl,StringimageName)3、显示图像显示图像可以用drawImage()方法,drawImage()是Graphics类的方法。它
有好几种形式,我们将要用到下面的一种:booleandrawImage(ImageimgObj,intleft,inttop,ImageObserverimgOb);【例6-8】用getImage()方法和drawImage()方法加载和显示图像。6.2.3双缓冲由于加载图像需要时
间,这时我们就会感觉屏幕在不断闪烁。为了解决这个问题,在内存或显存中开辟一块缓冲区,把加载的图像放到缓冲区中。当图像加载完毕,我们再把图像从缓冲区中调到屏幕上让它显示,由于从缓冲区读取数据的速度很快就不会出现闪烁了。这就称为双缓冲。【例6-9】演示双
缓冲技术的效果。我们创建了一个Image对象,然后在这个Image对象上(而不是在屏幕上)画图。画图需要用一个Graphics对象。这个Graphics对象可以通过getGraphics()方法来获得。下面构造一个Graphics对象gc,并用红色填充图像。Ca
nvasc=newCanvas();Imagetest=c.createImage(200,100);Graphicsgc=test.getGraphics();gc.setColor(Color.red);gc.fillR
ect(0,0,200,100);这个图像是不可见的,仅仅存在于内存中。为了真正显示这个图像,需调用drawImage()方法。6.2.4图像处理技术1、像素点数组的构成像素点是一个具有Alpha(透明
度)、Red(红)、Green(绿)和Blue(蓝)四个分量表示的整数,记作0xAARRGGBB。其中A、R、G、B的取值从0~f(十六进制)。红色:0xffff0000绿色:0xff00ff00蓝色:0xff0000ff白色:0xffffffff黑色:0xff0
00000图像的像素点其排列如图6.14所示,我们按从左往右、从上往下的顺序取出像素点,构成一整型数组。图6.14像素数组元素的排列2、MediaTracker类MediaTracker类用于加载多媒体图像,
使用时,先生成一个MediaTracker对象,再用它的addImage()方法来加载图像。addImage()方法有以下一般形式:voidaddImage(ImageimgObj,intimgID)v
oidaddImage(ImageimgObj,intimgID,intwidth,intheight)3、ImageProducer接口和MemoryImageSource类ImagePruducer是一个用于生成图像数据对象的接口。实现该接口的对象要用整数型数组或字节型数组生成Imag
e对象。MemoryImageSource是用于生成新的图像的类。它的构造函数如下:MemoryImageSource(intwidth,intheight,intpixel[],intoffset,intscanLineWidth)4、PixelGrabber类PixelGrabber类的
作用是从现有的图像中提取像素数据构造一个像素数组。在使用PixelGrabber时,首先需要生成一个足够大的int型的数组来存储像素数据,然后生成一个PixelGrabber实例对象,将提取到的图像数据存入到一个矩形区域中。最后,这个实例对象中调用grabPixels()方法将数据值放进像
素数组中。【例6-11】将图像进行反相处理示例。6.3.1Java3D概述Java3D的安装和运行:到其官方网站:http://java.sun.com/products/java-media/3D/下载最新的系统安装程序。Java3D安装
完毕后,在JDK目录下的jre\lib\ext子目录下,应有四个.jar文件:j3daudio.jar、j3dcore.jar、j3dutils.jar、vecmath.jar,在JDK目录下的jre\bin子目录下,应有J3D.dll、j3daudio.dll、J3DUtil
s.dll文件。另外,在demo目录下的java3d中有系统提供的示例程序。6.3.2Java3D程序设计1、Java3D的基本体系结构2、几个基本概念(1)虚拟空间在Java3D中,虚拟空间被定义为结合一系列对象的三维空间。虚拟空间被用作最大的聚集体表现单位,同时也可被看作一个数据库。对于一个J
ava3D应用程序,必须定义一个虚拟空间才可以在“空间”中显示三维图像。(2)坐标系统默认情况下,Java3D的坐标系统是右旋的三维坐标体系(3)场景为了支持大型虚拟空间,Java3D提出了“场景Locale”的概念。一个场景和与它结合的坐标系一起组成了在虚拟空间之下
的一个表现层。虚拟空间可以包含一个或多个场景。而所有其他的对象都附加在一个场景之中。3、Java3D设计方法构造一个Java3D应用程序,必须首先创建一个虚拟空间对象并且至少把一个Locale场景对象附加之上。然后,构建出需要的场景图像,
它由一个分支组结点开始并且包括至少一个观察平台对象,而场景图就是附加于这个观察平台。当一个包含场景图的观察对象被附加于一个虚拟空间,Java3D的渲染循环就开始工作。这样,场景就会和它的观察对象一起被绘制在画布(Ca
nvas3D)上。【例6-12】最简单的Java3D程序。总结本章的内容比较多,请教师根据教学时数的情况,选讲部分内容。11醉翁亭记1.反复朗读并背诵课文,培养文言语感。2.结合注释疏通文义,了解文本内容,掌握文本写作思路。3.把握文章的艺术特色,理解虚词在文中
的作用。4.体会作者的思想感情,理解作者的政治理想。一、导入新课范仲淹因参与改革被贬,于庆历六年写下《岳阳楼记》,寄托自己“先天下之忧而忧,后天下之乐而乐”的政治理想。实际上,这次改革,受到贬谪的除了范仲淹和滕子京之外,还有范仲淹改革的另一位支持者——
北宋大文学家、史学家欧阳修。他于庆历五年被贬谪到滁州,也就是今天的安徽省滁州市。也是在此期间,欧阳修在滁州留下了不逊于《岳阳楼记》的千古名篇——《醉翁亭记》。接下来就让我们一起来学习这篇课文吧!【教学提示】结合
前文教学,有利于学生把握本文写作背景,进而加深学生对作品含义的理解。二、教学新课目标导学一:认识作者,了解作品背景作者简介:欧阳修(1007—1072),字永叔,自号醉翁,晚年又号“六一居士”。吉州永丰(今属江西)人,因吉州原属庐陵郡,因此他又以“庐陵欧阳修”自居。谥
号文忠,世称欧阳文忠公。北宋政治家、文学家、史学家,与韩愈、柳宗元、王安石、苏洵、苏轼、苏辙、曾巩合称“唐宋八大家”。后人又将其与韩愈、柳宗元和苏轼合称“千古文章四大家”。关于“醉翁”与“六一居士”:初谪滁山,自号醉翁。既老而衰且病,将退休于颍水之上,则又更号六一居士。
客有问曰:“六一何谓也?”居士曰:“吾家藏书一万卷,集录三代以来金石遗文一千卷,有琴一张,有棋一局,而常置酒一壶。”客曰:“是为五一尔,奈何?”居士曰:“以吾一翁,老于此五物之间,岂不为六一乎?”写作背景:宋仁宗庆历五年(1045年),参知政事
范仲淹等人遭谗离职,欧阳修上书替他们分辩,被贬到滁州做了两年知州。到任以后,他内心抑郁,但还能发挥“宽简而不扰”的作风,取得了某些政绩。《醉翁亭记》就是在这个时期写就的。目标导学二:朗读文章,通文顺字1.初读文章,结合工具书梳理文章字词。2.朗读文章,划分文章节奏,标出节
奏划分有疑难的语句。节奏划分示例环滁/皆山也。其/西南诸峰,林壑/尤美,望之/蔚然而深秀者,琅琊也。山行/六七里,渐闻/水声潺潺,而泻出于/两峰之间者,酿泉也。峰回/路转,有亭/翼然临于泉上者,醉翁亭也。作亭者/谁?山之僧/曰/智仙也。名之者/谁?太守/自谓也。太守与客来饮/于此,饮少/辄醉
,而/年又最高,故/自号曰/醉翁也。醉翁之意/不在酒,在乎/山水之间也。山水之乐,得之心/而寓之酒也。节奏划分思考“山行/六七里”为什么不能划分为“山/行六七里”?明确:“山行”意指“沿着山路走”,“山行”是个状中短语,不能将其割裂
。“望之/蔚然而深秀者”为什么不能划分为“望之蔚然/而深秀者”?明确:“蔚然而深秀”是两个并列的词,不宜割裂,“望之”是总起词语,故应从其后断句。【教学提示】引导学生在反复朗读的过程中划分朗读节奏,在划分节奏的过程中感知文意。对于部分结构复杂
的句子,教师可做适当的讲解引导。目标导学三:结合注释,翻译训练1.学生结合课下注释和工具书自行疏通文义,并画出不解之处。【教学提示】节奏划分与明确文意相辅相成,若能以节奏划分引导学生明确文意最好;若学生理解有限,亦可在解读文意后
把握节奏划分。2.以四人小组为单位,组内互助解疑,并尝试用“直译”与“意译”两种方法译读文章。3.教师选择疑难句或值得翻译的句子,请学生用两种翻译方法进行翻译。翻译示例:若夫日出而林霏开,云归而岩穴暝,晦明变化者,山间之朝暮也
。野芳发而幽香,佳木秀而繁阴,风霜高洁,水落而石出者,山间之四时也。直译法:那太阳一出来,树林里的雾气散开,云雾聚拢,山谷就显得昏暗了,朝则自暗而明,暮则自明而暗,或暗或明,变化不一,这是山间早晚的景色。野花开放,有一股清幽的香味,好的树木枝叶繁茂,形成浓郁的绿荫。天高气爽,
霜色洁白,泉水浅了,石底露出水面,这是山中四季的景色。意译法:太阳升起,山林里雾气开始消散,烟云聚拢,山谷又开始显得昏暗,清晨自暗而明,薄暮又自明而暗,如此暗明变化的,就是山中的朝暮。春天野花绽开并散发出阵阵幽香,夏日佳树繁茂并形成一片浓荫,秋天风高气爽,霜色洁白,冬日水枯而石底上露,如此
,就是山中的四季。【教学提示】翻译有直译与意译两种方式,直译锻炼学生用语的准确性,但可能会降低译文的美感;意译可加强译文的美感,培养学生的翻译兴趣,但可能会降低译文的准确性。因此,需两种翻译方式都做必要引导。全文直译内容见《我的积累本》。目标导学四:解读文段
,把握文本内容1.赏析第一段,说说本文是如何引出“醉翁亭”的位置的,作者在此运用了怎样的艺术手法。明确:首先以“环滁皆山也”五字领起,将滁州的地理环境一笔勾出,点出醉翁亭坐落在群山之中,并纵观滁州全貌,鸟瞰群
山环抱之景。接着作者将“镜头”全景移向局部,先写“西南诸峰,林壑尤美”,醉翁亭坐落在有最美的林壑的西南诸峰之中,视野集中到最佳处。再写琅琊山“蔚然而深秀”,点山“秀”,照应上文的“美”。又写酿泉,其名字透出了泉与酒的关系,好泉酿好酒,好酒叫人醉。“醉翁亭
”的名字便暗中透出,然后引出“醉翁亭”来。作者利用空间变幻的手法,移步换景,由远及近,为我们描绘了一幅幅山水特写。2.第二段主要写了什么?它和第一段有什么联系?明确:第二段利用时间推移,抓住朝暮及四季特点,描绘了对比鲜明的晦明变化图及四季
风光图,写出了其中的“乐亦无穷”。第二段是第一段“山水之乐”的具体化。3.第三段同样是写“乐”,但却是写的游人之乐,作者是如何写游人之乐的?明确:“滁人游”,前呼后应,扶老携幼,自由自在,热闹非凡;“太守宴”,溪深鱼肥,泉香酒洌,美味佳
肴,应有尽有;“众宾欢”,投壶下棋,觥筹交错,说说笑笑,无拘无束。如此勾画了游人之乐。4.作者为什么要在第三段写游人之乐?明确:写滁人之游,描绘出一幅太平祥和的百姓游乐图。游乐场景映在太守的眼里,便多了一层政治清明的意味。太守在游人之乐中酒酣而醉,此醉是为山水之乐而醉,更是为能与百姓同
乐而醉。体现太守与百姓关系融洽,“政通人和”才能有这样的乐。5.第四段主要写了什么?明确:写宴会散、众人归的情景。目标导学五:深入解读,把握作者思想感情思考探究:作者以一个“乐”字贯穿全篇,却有两个句子别出深意,不单单是在写
乐,而是另有所指,表达出另外一种情绪,请你找出这两个句子,说说这种情绪是什么。明确:醉翁之意不在酒,在乎山水之间也。醉能同其乐,醒能述以文者,太守也。这种情绪是作者遭贬谪后的抑郁,作者并未在文中袒露胸怀,只含蓄地说:“醉能同其乐,醒能述以文者,太守也。”此句与醉翁亭的名称、“醉翁之意不
在酒,在乎山水之间也”前后呼应,并与“滁人游”“太守宴”“众宾欢”“太守醉”连成一条抒情的线索,曲折地表达了作者内心复杂的思想感情。目标导学六:赏析文本,感受文本艺术特色1.在把握作者复杂感情的基础上朗读文本。2.反
复朗读,请同学说说本文读来有哪些特点,为什么会有这些特点。(1)句法上大量运用骈偶句,并夹有散句,既整齐又富有变化,使文章越发显得音调铿锵,形成一种骈散结合的独特风格。如“野芳发而幽香,佳木秀而繁阴”“朝而往,暮而归,
四时之景不同,而乐亦无穷也”。(2)文章多用判断句,层次极其分明,抒情淋漓尽致,“也”“而”的反复运用,形成回环往复的韵律,使读者在诵读中获得美的享受。(3)文章写景优美,又多韵律,使人读来不仅能感受到绘画美
,也能感受到韵律美。目标导学七:探索文本虚词,把握文言现象虚词“而”的用法用法文本举例表并列1.蔚然而深秀者;2.溪深而鱼肥;3.泉香而酒洌;4.起坐而喧哗者表递进1.而年又最高;2.得之心而寓之酒也表承接1.渐闻水声潺潺,而泻出于两峰之间者;2.若夫日出而林霏开,云归
而岩穴暝;3.野芳发而幽香,佳木秀而繁阴;4.水落而石出者;5.临溪而渔;6.太守归而宾客从也;7.人知从太守游而乐表修饰1.朝而往,暮而归;2.杂然而前陈者表转折1.而不知人之乐;2.而不知太守之乐其乐也虚词“之”的用法用法文本举例表助词“的”1.
泻出于两峰之间者;2.醉翁之意不在酒;3.山水之乐;4.山间之朝暮也;5.宴酣之乐位于主谓之间,取消句子独立性而不知太守之乐其乐也表代词1.望之蔚然而深秀者;2.名之者谁(指醉翁亭);3.得之心而寓之酒也(指山水之乐)【教学提示】更多文言现象请参见《我的积累本》。三
、板书设计路线:环滁——琅琊山——酿泉——醉翁亭风景:朝暮之景——四时之景山水之乐(醉景)风俗:滁人游——太守宴——众宾欢——太守醉宴游之乐(醉人)心情:禽鸟乐——人之乐——乐其乐与民同乐(醉情)可取之处重视朗读,有利
于培养学生的文言语感,并通过节奏划分引导学生理解文意,突破了仅按注释疏通文义的桎梏,有利于引导学生自主思考;不单纯关注“直译”原则,同时培养学生的“意译”能力,引导学生关注文言文的美感,在一定程度上有助于培养学生的核心素养。不足之处文章难度相对较高,基础能力低的学生难以适
应该教学。会员免费下载