Java语言程序设计 清华大学出版社 第6章 java图形与图像处理.

Slides:



Advertisements
Similar presentations
第 2 章 Java 运行环境搭建 2.1 Java 的运行系统 2.1 Java 的运行系统 2.2 JDK 的安装与配置2.2 JDK 的安装与配置 2.3 Java 开发工具包 2.4 Java 源文件编辑环境的选择 2.5 Application 和 Applet 程序的编写与运行.
Advertisements

Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
单元二:面向对象程序设计 任务二:借书卡程序设计.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
《 Java开发环境配置》 主讲人:耿力.
大洋洲.
问卷调查的规范与技术 问卷调查的规范与技术.
JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.
C语言程序设计 李伟光.
当代 国 际 关 系(案例6) 冷战时期美苏关系的演变.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
一、平面点集 定义: x、y ---自变量,u ---因变量. 点集 E ---定义域, --- 值域.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
第4章 类与对象 本章导读 0. 面向对象编程 1. 类声明和类体 2. 类体的构成 3. 构造方法与对象的创建 4. 对象的引用与实体
Web技术 第8章 Applet应用 龚涛 东华大学信息科学与技术学院 2016年3月 教材:《JSP程序员成长攻略》
Java System Concepts and Animation Programming
嵌入式图形显示.
個人投資理財分析 財務狀況匯總表 銀行存款 共同基金 外幣基金 股票投資 保險價值 黃金投資 支出預算 房貸計算 不動產價值 資源變化資料庫
第一节 舞蹈的概念 第二节 舞蹈基本知识 第三节 舞蹈动作成套欣赏 第四节 舞蹈的编排 学习思考题 推荐书目及网站
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
《Java程序设计之网络编程》 教学课件 重庆大学计算机学院
管理学基本知识.
项目:贪吃蛇游戏设计 工作任务一:系统设计(system design) 工作任务二:豆类(Bean)设计
滁州学院首届微课程教学设计竞赛 课程名称:高等数学 主讲人:胡贝贝 数学与金融学院.
战 后 国 际 关 系 专题五:冷战时期美苏关系的演变 政治学与行政管理系.
視窗程式設計 2. 視窗版面配置 Chih Hung Wang Reference:
投手丘上的勇者 王建民 導讀者:黃柏涵.
俄语字母的发音体系 阅读规则.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第十二章 Java Applet.
Java Applet的运行原理 在网页向Java Applet传值 在Java Applet中播放声音 在Java Applet中使用组件
第11章 Java多媒体技术.
第14章 图形与图像 14.1 绘制文本 14.2 绘制基本图形 14.3 建立字体 14.4 清除 14.5 Java 2D
誰的電話永遠沒人接 您播(凌波)的 電話號碼是空號.
拾貳、 教育行政 一、教育行政的意義 教育行政,可視為國家對教育事務的管理 ,以增進教育效果。 教育行政,乃是一利用有限資源在教育參
課程銜接 九年一貫暫行綱要( )  九年一貫課程綱要( ) 國立台南大學數學教育系 謝 堅.
2.4 二元一次方程组的应用(1).
第三章 控制结构.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
Java语言程序设计-JAVA图形与图像处理
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
2018/11/15 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
Ch07 Java Applets 物件導向系統實務.
第 13 章 用CSS 設定 文字顏色與背景.
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
项目五 窗体上绘图 任务列表: 1、在窗体上绘制各种基本图形 2、在窗体上绘制文本.
Chapter 9 設計的精細製作: 行動計算 Software Engineering – An Engineering Approach, James F. Peters & Witold Pedrycz.
快乐玩转eclipse plugin插件开发之swt
Java语言程序设计 第八部分 Applet小程序.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
資訊學科中心研習 JAVA程式設計專題 臺北市立大理高級中學 黃世隆 2019/2/23.
面向对象 程序设计语言基础 马骏
《JAVA程序设计》 语音答疑 辅导老师:高旻.
第二章Java基本程序设计.
第二章 Java基本语法 讲师:复凡.
Java程序设计 第13章 图形.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第6章 面向对象的高级特征 学习目标 本章要点 上机练习 习 题.
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
方格紙上畫正方形.
第2章 Java语言基础.
第4讲 类和对象、异常处理 ggao.
Applet.
Web前端开发技术与实践 第18章:绘图 阮晓龙 /
Java语言程序设计.
用加減消去法解一元二次聯立方程式 台北縣立中山國中 第二團隊.
Summary
变量定位图形 Java中数据的类型分为四种:基本数据类型、数组类型、类类型以及接口类型。任何常量和变量都一定是上述四种数据类型中的一种。简单数据类型的实例化有两种:变量和常量。 变量名和常量名必须是Java语言中合法的标识符。 常量是在程序运行期间值不改变的量。 变量是在程序运行期间值可通过赋值改变的量,
Presentation transcript:

Java语言程序设计 清华大学出版社 第6章 java图形与图像处理

本章内容提要 1、图形与图像描绘 2、数字图像处理 3、java 3D基础

6.1 图形与图形的描绘 任何一个图形对象(java.awt.Component的子类)使用java.awt.Grephics类提供的绘图方法就可以画出线条、矩形、圆形等图形。该方法为: public void paint(Graohics g); 什么是程序? 算法、数据结构、程序设计方法、语言工具和环境都是用来描述数据和处理数据的。 标识符区分大小写

6.1.1 Graphics类 【例6-1】 绘制直线、矩形和圆的简单图形。 图6.1 组件的坐标系统 程序运行过程中,值不能改变的量称为常量 值可以改变的量称为变量。一个变量有一个名字,并在内存中占据一定的存储单元。变量的值就存储在变量所占据的内存单元中,所以,变量名代表的是变量值在内存中的地址。 变量类型 变量名1 [=值1],变量名2=[值2]……; “见名知意” “先定义,后使用” 图6.1 组件的坐标系统 【例6-1】 绘制直线、矩形和圆的简单图形。

Graphics类常用的绘图方法 方 法 说 明 drawLine(int x1, int y1, int x2, int y2) 方 法 说 明 drawLine(int x1, int y1, int x2, int y2) 绘制一条从(x1,y1)到(x2,y2)的直线 drawRect(int x, int y, int w, int h) 绘制一个顶点为(x,y),宽为w,高为h的矩形 drawOval(int x, int y, int w, int h) 绘制一个在顶点为(x,y),宽为w,高为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) 在(x,y)处显示字符串s drawImage(Image image, int x, int y, ImageObserver observer) 在(x,y)处显示图像image, observer为加载图像时的图像观察器 drawImage(Image image, int x, int y,int w,int h, ImageObserver observer) 在w宽h高的矩形区域内显示图像,图像能自动调整大小比例。

Graphics类的Set/get方法 getColor() 获得当前图形的色彩 setColor(Color c) 设置当前图形的色彩 getFont() 获得当前字体 setFont(Font font) 设置当前字体 getClip() 获取当前的剪贴板内容。 setClip(int, int, int, int) 将指定的矩形设置为当前的剪贴区。

【例6-2】 绘制用色彩填充的笑脸图形。 变量的范围 分配的存储空间不一样。

6.1.2 Java 2D 绘制时,只要将Graphics 对象强制转化为Graphics 2D对象就行。

【例6-3】设置线条粗细

6.1.3 画布Canvas 画布Canvas类是一个用来绘制图形的矩形组件,在画布中可以象在Applet中那样绘制各种图形,也可以响应鼠标和键盘事件。

1、创建 Canvas的构造方法没参数,所以使用简单的语句就可以创建一个画布对象: Canvas canvas1=new Canvas(); 在创建了 Canvas对象后,一定要调用setSize()方法确定这个画布的大小。   Canvas具有自己的坐标系统,使用布局管理器可以确定它在其他组件中的位置,并且可以用布局管理器来进行版面布局。

2、常用方法 我们在进行程序设计时,经常把要实现的功能单独设计为一个类,而把显示这个功能设计成另一个,我们把实现功能的类称为业务逻辑层,而显示功能的类称为表现层。这样,把逻辑层和表现层分开,有利于实现代码重用。看下面的示例。 【例6-5】通过一个窗体的文本框输入圆的半径及坐标位置,在画布上绘制一个圆。以此例说明,逻辑层和表现层间的数据传递。

(a) 逻辑层和表现层间的数据传递 (b) 在画布上绘制圆形 图6.6 逻辑层与表现层的设计模式示例

6.2 数字图像处理 数字图像处理技术就是将图像信号转换成数字格式并利用计算机进行处理的过程。 我们要用到awt的Image类和java.awt.image包,awt的抽象类Image所有图形图像类的父类,java.awt.image包为创建和修改图像提供了技术支持。

6.2.1 图像文件 例:(1) 单一灰色 (2)渐变灰度。

6.2.2 图像的基本操作 图像最基本的操作有三种,它们是创建图像、加载图像和显示图像。 1、 创建图像对象 6.2.2 图像的基本操作 图像最基本的操作有三种,它们是创建图像、加载图像和显示图像。 1、 创建图像对象 由于图像最终要在屏幕中显示出来,java.awt的Component类提供了一个createImage()方法来生成Image图像对象。 CreateImage()方法有两种形式: Image createImage(ImageProducer imgProd) ; Image createImage(int width, int height) ;

2、 加载图像 获得图像的另一种方法是加载图像。这通过使用由Applet类定义的getImage()方法来实现。它有以下形式: Image getImage(URL url) Image getImage(URL url, String imageName)

3、显示图像 显示图像可以用drawImage()方法,drawImage()是Graphics类的方法。它有好几种形式,我们将要用到下面的一种: boolean drawImage(Image imgObj, int left, int top, ImageObserver imgOb) ;

【例6-8】用getImage()方法和drawImage()方法加载和显示图像。

6.2.3 双 缓 冲 由于加载图像需要时间,这时我们就会感觉屏幕在不断闪烁。 6.2.3 双 缓 冲 由于加载图像需要时间,这时我们就会感觉屏幕在不断闪烁。 为了解决这个问题,在内存或显存中开辟一块缓冲区,把加载的图像放到缓冲区中。当图像加载完毕,我们再把图像从缓冲区中调到屏幕上让它显示,由于从缓冲区读取数据的速度很快就不会出现闪烁了。这就称为双缓冲。

【例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()方法。

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()方法有以下一般形式: void addImage(Image imgObj, int imgID) void addImage(Image imgObj, int imgID, int width, int height)

3、ImageProducer接口和MemoryImageSource 类 ImagePruducer是一个用于生成图像数据对象的接口。实现该接口的对象要用整数型数组或字节型数组生成Image对象。 MemoryImageSource是用于生成新的图像的类。它的构造函数如下: MemoryImageSource(int width, int height, int pixel[ ], int offset, int scanLineWidth)

4、PixelGrabber类 PixelGrabber类的作用是从现有的图像中提取像素数据构造一个像素数组。 在使用PixelGrabber时,首先需要生成一个足够大的int型的数组来存储像素数据,然后生成一个PixelGrabber实例对象,将提取到的图像数据存入到一个矩形区域中。最后,这个实例对象中调用grabPixels()方法将数据值放进像素数组中。

【例6-11】将图像进行反相处理示例。

6.3.1 Java 3D概述 Java 3D的安装和运行 : 到其官方网站: http://java.sun.com/products/java-media/3D/ 下载最新的系统安装程序。 Java 3D安装完毕后,在JDK目录下的jre\lib\ext子目录下,应有四个.jar文件:j3daudio.jar、j3dcore.jar、j3dutils.jar、vecmath.jar,在JDK目录下的jre\bin子目录下,应有J3D.dll、j3daudio.dll、J3DUtils.dll文件。另外,在demo目录下的java3d中有系统提供的示例程序。

6.3.2 Java 3D程序设计 1、Java 3D的基本体系结构

2、几个基本概念 (1)虚拟空间 在Java3D中,虚拟空间被定义为结合一系列对象的三维空间。虚拟空间被用作最大的聚集体表现单位,同时也可被看作一个数据库。 对于一个Java3D应用程序,必须定义一个虚拟空间才可以在“空间”中显示三维图像。

(2)坐标系统 默认情况下,Java3D的坐标系统是右旋的三维坐标体系 (3)场景 为了支持大型虚拟空间,Java3D提出了“场景Locale”的概念。一个场景和与它结合的坐标系一起组成了在虚拟空间之下的一个表现层。虚拟空间可以包含一个或多个场景。而所有其他的对象都附加在一个场景之中。

3、Java 3D设计方法 构造一个Java 3D应用程序,必须首先创建一个虚拟空间对象并且至少把一个Locale场景对象附加之上。然后,构建出需要的场景图像,它由一个分支组结点开始并且包括至少一个观察平台对象,而场景图就是附加于这个观察平台。当一个包含场景图的观察对象被附加于一个虚拟空间,Java3D的渲染循环就开始工作。这样,场景就会和它的观察对象一起被绘制在画布(Canvas 3D)上。

【例6-12】最简单的Java 3D程序。

总结 本章的内容比较多,请教师根据教学时数的情况,选讲部分内容。