Java图形与图像处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为了解决这个问题,在内存或显存中 开辟一块缓冲区,把加载的图像放到缓 冲区中。当图像加载完毕,我们再把图 像从缓冲区中调到屏幕上让它显示,由 于从缓冲区读取数据的速度很快就不会 出现闪烁了。这就称为双缓冲。
【例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、 创建图像对象 由于图像最终要在屏幕中显示出来,java.awt 的Component类提供了一个createImage()方法来 生成Image图像对象。 CreateImage()方法有两种形式: Image createImage(ImageProducer imgProd) ; Image createImage(int width, int height) ;
drawArc(int x, int y, int w, int h, int s1, int s2) clearRect(int x1, int y1, int x2, int y2)
drawString(String s,int x,int y) drawImage(Image image, int x, int y, ImageObserver observer) drawImage(Image image, int x, int y,int w,int h, ImageObserver observer)
【例6-3】设置线条粗细
6.1.3 画布Canvas
画布Canvas类是一个用来绘制图 形的矩形组件,在画布中可以象在 Applet中那样绘制各种图形,也可 以响应鼠标和键盘事件。
1、创建
Canvas的构造方法没参数,所以使用 简单的语句就可以创建一个画布对象:
Canvas canvas1=new Canvas(); 在创建了 Canvas对象后,一定要调用
Graphics类的Set/get方法
getColor()
获得当前图形的色彩
setColor(Color c) 设置当前图形的色彩
getFont()
获得当前字体
setFont(Font font) 设置当前字体
getClip() setClip(int, int, int, int)
获取当前的剪贴板内容。
6.1.1 Graphics类
图6.1 组件的坐标系统
【例6-1】 绘制直线、矩形和圆的简单图 形。
Graphics类常用的绘图方法
方法 drawLine(int x1, int y1, int x2, int y2) drawRect(int x, int y, int w, int h)
drawOval(int x, int y, int w, int h)
2、 加载图像 获得图像的另一种方法是加载图像。这 通过使用由Applet类定义的getImage()方 法来实现。它有以下形式:
Image getImage(URL url)
Image getImage(URL url, String imageName)
3、显示图像
显示图像可以用drawImage()方法, drawImage()是Graphics类的方法。它有好 几种形式,我们将要用到下面的一种:
将指定的矩形设置为当 前的剪贴区。
【例6-2】 绘制用色彩填充的笑脸 图形。
6.1.2 Java 2D
graphics类还有一些不足,例如缺少改变线条粗细的方法,也 缺少填充一个对象的方法。Graphics 2D可以解决这些问题。
绘制时,只要将Graphics 对象强制转化为Graphics 2D对象就行。
boolean drawImage(Image imgObj, int left, int top, ImageObserver imgOb) ;
【例6-8】用getImage()方法和 drawImage()方法加载和显示图像。
6.2.3 双 缓 冲
由于加载图像需要时间wk.baidu.com这时我们 就会感觉屏幕在不断闪烁。
setSize()方法确定这个画布的大小。 Canvas具有自己的坐标系统,使用布
局管理器可以确定它在其他组件中的位 置,并且可以用布局管理器来进行版面 布局。
2、常用方法
我们在进行程序设计时,经常把要实现 的功能单独设计为一个类,而把显示这个功 能设计成另一个,我们把实现功能的类称为 业务逻辑层,而显示功能的类称为表现层。 这样,把逻辑层和表现层分开,有利于实现 代码重用。看下面的示例。
说明 绘制一条从(x1,y1)到(x2,y2)的直线 绘制一个顶点为(x,y),宽为w,高为 h的矩形 绘制一个在顶点为(x,y),宽为w,高 为h的矩形内接椭圆 绘制一段弧度为从s1到s1+s2的圆弧
用当前颜色填充的方法清除指定矩形 区。 在(x,y)处显示字符串s 在(x,y)处显示图像image, observer 为加载图像时的图像观察器 在w宽h高的矩形区域内显示图像,图 像能自动调整大小比例。
Java语言程序设计
主讲:张思民
仰恩大学Java课程组
第6章 Java图形与图像 处理
本章内容提要
1、图形与图像描绘 2、数字图像处理 3、java 3D基础
6.1 图形与图形的描绘
任何一个图形对象(java.awt.Component 的子类)使用java.awt.Grephics类提供 的绘图方法就可以画出线条、矩形、圆 形等图形。该方法为: public void paint(Graohics g);
相关文档
最新文档