Java语言程序设计-JAVA图形与图像处理

Slides:



Advertisements
Similar presentations
Java 语言程序设计 第 6 章 Java 图形与事件处理. 本章主要内容: 6.1 图形与图形的描绘 6.1 图形与图形的描绘 图形绘制特点及绘图工具 paint() 图形绘制特点及绘图工具 paint() Graphics 类 Graphics.
Advertisements

3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第6章 Photoshop 的浮动面板 本章节学生应熟练掌握Photoshop的浮动面板的组成和使用。 教学重点:
概述 6.1 导航器面板 6.2 信息面板 6.3 调色板面板 6.4 色板面板 6.5 样式面板 6.6 历史记录面板
《 Java开发环境配置》 主讲人:耿力.
JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
Java System Concepts and Animation Programming
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
西南科技大学网络教育系列课程 高级语程序设计(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
项目八 显示时钟.
项目8员工创意涂鸦室.
第三部分 Java语言编程应用篇 第6章 Java语言的 图形用户界面开发技术 (之二).
第14章 c++中的代码重用.
第四讲 绘制直线对象 建筑CAD制图.
第三部分 Java语言编程应用篇 第6章 Java语言的 图形用户界面开发技术 (之一).
第三章 控制结构.
第九章 字符串.
Java程序设计 第10章 图形用户界面.
Ch02 視窗Swing套件 物件導向系統實務.
Java语言程序设计-图形用户界面设计(2)
2018/11/11 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
GUI事件处理 主讲:赖国荣 QQ:
2018/11/15 面向对象与多线程综合实验-GUI设计 教师:段鹏飞.
Java Applet 介绍.
Ch07 Java Applets 物件導向系統實務.
窗体图形图像处理与 Applet程序设计 主讲:赖国荣 QQ:
快乐玩转eclipse plugin插件开发之swt
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
記事本 物件導向系統實務.
第九章 窗口、菜单和对话框 本章的任务: 介绍图形用户界面的高级组件。这些组件包括窗口、菜单和对话框等,它们可以构造出标准GUI应用程序。最后,简要介绍Java Swing的使用方法。
第8章 图形用户界面的设计与实现 本章介绍Java基本的图形编程知识,包括窗口的显示、文字和图像的显示、事件处理以及图形用户界面中常用的组件等内容。 本章要点 8.1 Java图形用户界面概述 8.2 标准组件 8.3 简单图形用户界面 8.4 Java事件处理 8.5 布局管理 8.6.
走进编程 程序的顺序结构(二).
辅导课程六.
Java语言程序设计 第八部分 Applet小程序.
绘制圆与多边形 椭圆形 绘制椭圆形的方法是 drawOval(x ,y , width , height), 绘制实心椭圆形的方法是
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
Ch04 事件處理 物件導向系統實務.
CH04 視窗中元件排排坐 物件導向系統實務.
C/C++/Java 哪些值不是头等程序对象
資訊學科中心研習 JAVA程式設計專題 臺北市立大理高級中學 黃世隆 2019/2/23.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
事件處理.
JSP简介 JSP本质上就是把Java代码嵌套到HTML中,然后经过JSP容器的编译执行,可以根据这些动态代码的运行结果生成对应的HTML代码,从而可以在客户端的浏览器中正常显示。在这个小节中将介绍JSP的运行原理、JSP的优点和其运行环境的搭建。
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
Java程序设计 第13章 图形.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
辅导课程十五.
Java语言程序设计 清华大学出版社 第6章 java图形与图像处理.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
Applet.
判斷(選擇性敘述) if if else else if 條件運算子.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第二章 Java基本语法 讲师:复凡.
第三章 图形的平移与旋转.
事件处理 例: import java.applet.Applet; import java.awt.*;
变量定位图形 Java中数据的类型分为四种:基本数据类型、数组类型、类类型以及接口类型。任何常量和变量都一定是上述四种数据类型中的一种。简单数据类型的实例化有两种:变量和常量。 变量名和常量名必须是Java语言中合法的标识符。 常量是在程序运行期间值不改变的量。 变量是在程序运行期间值可通过赋值改变的量,
Presentation transcript:

Java语言程序设计-JAVA图形与图像处理 2018/11/11 Java语言程序设计-JAVA图形与图像处理 教师:段鹏飞

1、学会使用匿名类和了解它的特点 2、了解Java图形坐标系、颜色和像素等概念 3、在绘图中学会使用paint(graphics g)方法 2018/11/11 知识点 1、学会使用匿名类和了解它的特点 2、了解Java图形坐标系、颜色和像素等概念 3、在绘图中学会使用paint(graphics g)方法

单事件源的“多个事件” 学生可发生多种事件 学生的生活中,可能发生... 开导帮助 讲 解 “噗!” “哎呦...” 生病了 学习困难 生活困难 讲 解 开导帮助

分析: “单事件源-多事件”处理 学 生 事件源 事 件 监听器 治 疗 开导帮助 讲 解 左键 单击 鼠标 监听 鼠标操作 键入 文本 学习问题 生活困难 生 病 教 师 辅导员 医 生 治 疗 开导帮助 讲 解 事件源 文本框 左键 单击 鼠标 监听 鼠标操作 键入 文本 按键 监听 输入文本 变换 焦点 监听 焦点变换 事 件 监听器 具体工作

匿名类的方式实现事件处理

匿名类 匿名类的定义 顾名思义就是未被命名的类 匿名类的特征 在程序中只使用(即:被实例化)一次

事件适配器类的特征 事件适配器类 适配器类就是一个特殊的事件监听器类 Java语言只针对包含多个抽象方法的监听器接口,提供了相应的XXXAdapter(适配器) 比如:WindowListener接口的适配器类是WindowAdapter

事件处理 实现事件处理的步骤 创建事件监听器类 创建事件监听器对象 注册事件监听器

程序功能需求 解决方法 程序设计.例一 绘制一个窗体 窗体内绘制一个按钮,名为“点我” 按下按钮时,在命令行打印信息 打印内容为 “我知道你按下按钮啦!” 解决方法 设计自己的带有按钮的窗体类 (派生自Java.awt.Frame类) 设计自己的按钮事件监听器类 (实现ActionListener接口、并完成ActionPerformed方法) 创建按钮事件监听器类对象,并绑定到“按钮”上 (调用按钮类的 addActionListener方法)

事件处理例1.代码 设计自己的窗体类 按钮 事件源 注册监听器 主类 监听器类 import java.awt.*; import java.awt.event.*; class ButtonListener implements ActionListener { public void actionPerformed ( ActionEvent e ) { System.out.println ( “我知道你按下按钮啦“ ); } 按钮 窗体 主类 监听器 监听器类 class myButtonFrame extends Frame { Button btn; myButtonFrame(String s) { //构造函数 super(s); this.setSize(200,120); /* 创建按钮*/ btn = new Button("点击"); this.add(btn); // 事件监听器创建和注册 ButtonListener bl = new ButtonListener(); btn.addActionListener(bl); } 设计自己的窗体类 按钮 事件源 注册监听器 public class ActionEventTest { // 主类 public static void main(String args[]){ myButtonFrame frm = new myButtonFrame("ActionEventTest"); frm.show(); // 显示窗体 } 主类

程序设计. 例一. 运行结果

Java语言程序设计-JAVA图形与图像处理 2018/11/11 Java语言程序设计-JAVA图形与图像处理 教师:段鹏飞

Java语言程序设计-手把手教大家PhotoShop 2018/11/11 Java语言程序设计-手把手教大家PhotoShop 教师:段鹏飞

1 图形处理坐标系 组件的坐标系统 程序运行过程中,值不能改变的量称为常量 值可以改变的量称为变量。一个变量有一个名字,并在内存中占据一定的存储单元。变量的值就存储在变量所占据的内存单元中,所以,变量名代表的是变量值在内存中的地址。 变量类型 变量名1 [=值1],变量名2=[值2]……; “见名知意” “先定义,后使用” 组件的坐标系统

颜色

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

图像处理技术 像素点数组的构成

像素点是一个具有Alpha(透明度)、Red(红)、Green(绿)和Blue(蓝)四个分量表示的整数,记作0xAARRGGBB。其中A、R、G、B的取值从0~f(十六进制)。 红色: 0xffff0000 绿色: 0xff00ff00 蓝色: 0xff0000ff 白色: 0xffffffff 黑色: 0xff000000 图像的像素点其排列如图6.14所示,我们按从左往右、从上往下的顺序取出像素点,构成一整型数组。

像素数组元素的排列

字型 字型主要包含:大小,样式,字体等

数字图像处理 包:java.awt.image

Graphics类的对象g可使用Graphics类的setColor/getColor方法来改变/获得当前颜色,g使用的默认颜色是黑色 black, blue, cyan, darkGray, gray, green, lighGray, magenta, orange, pink, red, white, yellow

getColor() 获得当前图形的色彩 setColor(Color c) 设置当前图形的色彩 getFont() 获得当前字体 Graphics类的Set/get方法 getColor() 获得当前图形的色彩 setColor(Color c) 设置当前图形的色彩 getFont() 获得当前字体 setFont(Font font) 设置当前字体

2.2 图像的基本操作(Image) 读取图像: getImage(url) 画图:g.drawImage()

菜单组件 菜单和对话框 不能将菜单组件直接添加到一般的容器中 不能使用布局管理器对它们进行布局 AWT提供的菜单机制是这样的:一个容器包含一个菜单条,一个菜单条中包含多个菜单,一个菜单中包含多个菜单或菜单项 和菜单相关的组件有四个:MenuBar, Menu, MenuItem, CheckboxMenuItem.

菜单条(MenuBar) 一个菜单条组件是一个水平容器,并作为所有菜单树的根。 一个窗体中只可以显示一个菜单条。 菜单条不能注册任何监听者。 例如: Frame fr = new Frame(); MenuBar mb = new MenuBar(); f.setMenuBar(mb)

菜单(Menu) 菜单组件提供了一个基本的下拉式菜单,它可以加入到一个菜单条或者另一个菜单中。 例如: MenuBar mb = new MenuBar(); Menu mu1 = new Menu(“File”); Menu mu2 = new Menu(“Edit”); mb.add(mu1); mb.add(mu2); f.setMenuBar(mb);

菜单项(MenuItem) 菜单项组件通常被加入到菜单中,以构成一个完整的菜单。 通常,将一个ActionListener注册到一个菜单项对象中,接收和处理选中菜单项的事件。 例如: Menu mu = new Menu(“File”); MenuItem mi1 = new MenuItem(“New”); MenuItem mi2 = new MenuItem(“Load”); mu.add(mi1); mu.add(mi2);

1 Java绘图类别

绘图方式 绘制字符串与字符数组 绘制直线、矩形、圆环 绘制带颜色的图形 绘制椭圆、圆弧 绘制多边形 使用clearRect方法

使用drawString方法在屏幕上显示串对象: 显示字符串与字符数组 使用drawString方法在屏幕上显示串对象: drawString(String s,int x,int y) 使用Graphics类的drawChar方法显示字符数组: drawChar(char data[],int offset,int length,int x,int y)

画图程序

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

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类的drawLine方法: 画直线 使用Graphics类的drawLine方法: drawLine(int x1,int y1,int x2,int y2) public void paint(Graphics g) { g.drawLine(0,0,160,80); }

drawRect方法: 画矩形 drawRect(int x,int y,int width,int height) x,y指定矩形左上角的位置 width,height指定矩形的大小(单位:像素) public void paint(Graphics g) { g.drawRect(0,0,10,10); }

使用drawRoundRect方法画圆角矩形: 画矩形 使用drawRoundRect方法画圆角矩形: drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight) arcWidth, arcHeight指定矩形圆角的尺寸 public void paint(Graphics g) { g.drawRoundRect(0,0,150,170,40,25); }

使用drawRoundRect方法也可画圆环 public void paint(Graphics g) { g.drawRoundRect(0,0,50,50,50,50); }

画圆弧 使用图形类的drawArc方法: drawArc(int x,int y,int width,int height,int starAngle,int arcAngle) 弧的中心是它的外接矩形的中心,该矩形的左上角的坐标是(x,y),宽width,高height (starAngle,arcAngle单位是度,0度是3点钟的方位)这两个参数表示从startAngle的角度开始,逆时针画arcAngle度的弧

clearRect(int x,int y,int width,int height) 用背景色填充指定矩形以达到清除该矩形的效果,即当一个Gaphics对象使用该方法时,相当于在使用一个“橡皮擦” x,y被清除矩形左上角的坐标,另两个参数是被清除矩形的宽和高

绘制笑脸图形 变量的范围 分配的存储空间不一样。

作业与练习 如何来制作图形界面?它需要引入哪些包 在java中,什么是事件?简述处理事件的机制。 什么是布局管理器,它有什么作用? 请编写一个窗口来实现BorderLayout的布局。 请说明FlowLayout布局方式的特点? GridLayout布局的特点有哪些?

2018/11/11 谢谢