第14章 图形与图像 14.1 绘制文本 14.2 绘制基本图形 14.3 建立字体 14.4 清除 14.5 Java 2D

Slides:



Advertisements
Similar presentations
雅安市教师资格定期注册 政策解读 雅安市教育局政策法规科. 一、执行文件: 一、执行文件: 1 、《四川省教育厅关于印发《四川省中小学教师资格定期 注册试点实施细则(试行)》的通知》(川教 [2014]60 号); 1 、《四川省教育厅关于印发《四川省中小学教师资格定期 注册试点实施细则(试行)》的通知》(川教.
Advertisements

面向对象程序设计 、. 第二章 面向对象的分析与设计 学习目标 1 确定系统中的对象 2 确定对象的属性及操作 3 测试对象的有效性 4 区分对象和类 5 了解面向对象的编程和过程化编程之间的区别 6 了解封装的主要好处 7 了解软件开发的主要步骤.
一、就业系统 登陆地址: 账号及密码 - 账号: 密码: - 验证码与网页上相同, 不区分大小写。 – 具体如图:
第二章 中药药性理论的现代研究 掌握中药四性的现代研究 掌握中药五味的现代研究 掌握中药毒性的现代研究 了解中药归经的现代研究.
第八次全國科學技術會議 第一議題:結合人文科技,提升生活品質
岳飞( 1103——1142) 字鹏举,汉族人,是南宋著名抗金将领,相州汤阴(今河南汤阴)人。二十岁从军,因军功屡迁,后被秦桧以“莫须有”罪名污陷而杀害,时年39岁,谥“武穆”,后改谥“忠武”,有《岳武穆集》传世。《全宋词》存词三首 (《满江红·怒发冲冠》、《满江红·登黄鹤楼有感》、《小重山》)。
JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.
C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
一百零一年溪口國小 學校日 班級: 三年三班 教師: 張慈麟.
一、平面点集 定义: x、y ---自变量,u ---因变量. 点集 E ---定义域, --- 值域.
关注热点 2014年天猫双十一成交总额 571亿 点亮217个国家地区
Java System Concepts and Animation Programming
焦作32中 108班 杨梦洁 、杨梦涛、赵 璐、赵鑫、赵恒 2009年8月2日
 坚持以人为本 一切依靠人民 胡锦涛总书记“七一”重要讲话全文1.4万多字,其中“人民”一词用了136次,平均每104个字里就有一个,可见“人民”在党心中的分量。讲话阐述的保持和发展马克思主义政党先进性的根本点第二条就是,坚持为了人民、依靠人民,诚心诚意为人民谋利益,从人民群众中汲取智慧和力量,始终保持党同人民群众的血肉联系;提高党的建设科学化水平目标任务第三条也强调,必须坚持以人为本、执政为民理念,牢固树立马克思主义群众观点、自觉贯彻党的群众路线,始终保持党同人民群众的血肉联系。这充分体现了我党把人民放
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
管理学基本知识.
學生:3A黃寶珠(35),楊偉漢(39) 教師:黃瑞勤老師
项目:贪吃蛇游戏设计 工作任务一:系统设计(system design) 工作任务二:豆类(Bean)设计
“东方瑞士” ——青岛.
滁州学院首届微课程教学设计竞赛 课程名称:高等数学 主讲人:胡贝贝 数学与金融学院.
高等职业学校建筑设计类与艺术设计类专业骨干教师实践能力国家级培训
没有请柬该如何办 记者如何选取有利位置 着装 准备工作 提问时的注意事项
西南科技大学网络教育系列课程 高级语程序设计(Java) 第十二章 Java Applet.
Java Applet的运行原理 在网页向Java Applet传值 在Java Applet中播放声音 在Java Applet中使用组件
第11章 Java多媒体技术.
项目八 显示时钟.
项目8员工创意涂鸦室.
和春技術學院資訊管理系 九十三學年度第一學期 物件導向程式語言 第八章 A W T 的2D繪圖套件 教學投影片 課程網頁 講師:毛立仁
第 18 章 圖形使用者介面.
第20课 迷人的动画片 威海市 高新区 初村小学 执教人:吴磊. 第20课 迷人的动画片 威海市 高新区 初村小学 执教人:吴磊.
3.1能源资源的开发 ——以我国山西省为例.
客户需求书暨邀请罗老函 “中国亮点”首先是一家“外脑投资”公司 投的是“思想资产”—— 《新利益管理学》 二0一六年三月十五日.
拾貳、 教育行政 一、教育行政的意義 教育行政,可視為國家對教育事務的管理 ,以增進教育效果。 教育行政,乃是一利用有限資源在教育參
課程銜接 九年一貫暫行綱要( )  九年一貫課程綱要( ) 國立台南大學數學教育系 謝 堅.
2.4 二元一次方程组的应用(1).
旅游服务与管理专业 旅游服务与管理专业 旅游服务与管理专业 旅游服务与管理专业 旅游服务与管理专业
5B專題研習第六組 主題:積極人生·拒絕誘惑 吸毒的禍害
第三章 控制结构.
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
組別:第五組 小組成員:賴瑋、蔡宜瑾、曾子珊、陳玟羽 報告人:曾子珊
Java语言程序设计-JAVA图形与图像处理
Ch07 Java Applets 物件導向系統實務.
Classes Lecturer: 曾學文.
项目五 窗体上绘图 任务列表: 1、在窗体上绘制各种基本图形 2、在窗体上绘制文本.
快乐玩转eclipse plugin插件开发之swt
面向对象程序设计 、.
Java语言程序设计 第八部分 Applet小程序.
資訊學科中心研習 JAVA程式設計專題 臺北市立大理高級中學 黃世隆 2019/2/23.
排列组合 1. 两个基本原理 分类加法计数原理 分步乘法计数原理.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
第二章 Java基本语法 讲师:复凡.
Java程序设计 第13章 图形.
第三节 常见天气系统.
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
Java 程式設計 講師:FrankLin.
中国农业科学院博士后学术论坛 博士后基金申请的经验及体会 中国农业科学院生物技术研究所 秦 华 博士
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第四章 函数 丘志杰 电子科技大学 计算机学院 软件学院.
Java语言程序设计 清华大学出版社 第6章 java图形与图像处理.
方格紙上畫正方形.
C++面向对象程序设计 谭浩强编著 授课教师:姬广永 学习网站:
欢迎乘座远航号! 让我们一起去知识的海洋寻宝吧!
Applet.
判斷(選擇性敘述) if if else else if 條件運算子.
台北縣的歷史發展.
用加減消去法解一元二次聯立方程式 台北縣立中山國中 第二團隊.
萬能科技大學 106-1導師會議 研發處 吳復強
变量定位图形 Java中数据的类型分为四种:基本数据类型、数组类型、类类型以及接口类型。任何常量和变量都一定是上述四种数据类型中的一种。简单数据类型的实例化有两种:变量和常量。 变量名和常量名必须是Java语言中合法的标识符。 常量是在程序运行期间值不改变的量。 变量是在程序运行期间值可通过赋值改变的量,
Presentation transcript:

第14章 图形与图像 14.1 绘制文本 14.2 绘制基本图形 14.3 建立字体 14.4 清除 14.5 Java 2D 第14章 图形与图像 14.1  绘制文本 14.2  绘制基本图形 14.3  建立字体 14.4  清除 14.5  Java 2D 14.6  图形的布尔运算 14.7  绘制钟表 14.8  绘制图像 14.9  制作JPG图像 14.10 XOR绘图模式 14.11  打印图形、图像

Component类有一个方法public void paint(Graphics g),我们可以在其子类中重写这个方法。当重写这个方法时,相应的java运行环境将参数g实例化,对象g就可以在该组件的坐标系内绘制图形、图像等。组件都是矩形形状,组件本身有一个默认的坐标系,组件的左上角的坐标值是(0,0)。如果一个组件的宽是200,高是80,那么,该坐标系中,x坐标的最大值是200,y坐标的最大值是80。

14.1绘制文本 drawString(String s, int x, int y) 从参数x、y指定的坐标位置处,从左向右绘制参数s指定的字符串。 drawChars(char data[],int offset, int length, int x, int y) 绘制data数组中的部分字符,length指定数组中要连续绘制的字符的个数,offset是首字符在数组中的位置。

14.2绘制基本图形 1.直线 drawLine(int x1,int y1,int x2,int y2) 绘制从起点(x1,y1)到终点(x2,y2)的直线段 2.矩形 drawRect (int x,int y,int w,int h) 绘制矩形 fillRect (int x,int y,int w,int h) 填充矩形 矩形的左上角的坐标由参数x、y指定,矩形的宽和高由参数w,h指定。 3.圆角矩形 drawRoundRect(int x,int y,int w,int h,int arcW,int arcH) 绘制圆角矩形 fillRoundRect(int x,int y,int w,int h,int arcW,int arcH) 填充圆角矩形 参数arcW、arcH指定圆角的尺寸,见图14.1中的4个黑角部分。

4.椭圆 drawOval(int x,int y,int w,int h) 绘制椭圆 fillOval(int x,int y,int w,int h) 填充椭圆 其中,参数x、y给出椭圆距x轴和y轴的距离,参数w、h给出椭圆的宽和高。 5.圆弧 圆弧就是椭圆的一部分。 drawArc(int x,int y,int width,int height,int starAngle, int arcAngle) 绘制圆弧 fillArc(int x,int y,int width,int height,int starAngle,int arcAngle) 填充圆弧 参数x、y、width、heigth指定椭圆的位置和大小,参数starAngle和 arcAngle的单位都是“度”。而起始角度的0度是3点钟的方位。参数starAngle,arcAngle表示从starAngle的角度开始逆时针或顺时针方向画arcAngle度的弧,当arcAngle是正值时为逆时针,否则为顺时针。starAngle的值可以是负值,例如-90度是6点的方位。

14.3 建立字体 setFont(Font f) 设置字体。当绘制文本时,Graphics对象用参数f指定的字体。

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

14.5 Java 2D Java1.2给出了一个新类Graphics2D,它是Graphics类的子类。一个Graphics2D对象把直线、圆等作为一个对象来绘制,也就是说,如果想用一个Graphics2D类型的“画笔”来画一个圆的话,就必须先创建一个圆的对象。我们仍需使用paint(Graphics g)方法来绘制,只需将Graphics对象强制转化为Graphics2D对象即可。

1.直线 使用java.awt.geom包中的Line2D的子类Line2D.Double创建一个直线对象。如: Line2D line=new Line2D.Double(12,20,100, 90); 创建一条(12,20)到(100,90)直线对象。 2.矩形 使用java.awt.geom包中的Rectangle2D. Double类来创建一个矩形对象,如: Rectangle2D rect=new Rectangle2D. Double (50,50,300,50.897); 上述语句创建了一个左上角坐标是(50,50),宽是300,高是50.987的一个矩形对象。

3.圆角矩形 使用java.awt.geom包中的RoundRectangle2D. Double类来创建一个圆角矩形对象: RoundRectangle2D rect_round=new RoundRectangle2D. Double (50,50,300,50,8,5); 上述语句创建了一个左上角坐标是(50,50),宽是300,高是50,圆角的长轴和短轴分别为8和5的圆角矩形对象。 4.椭圆 使用java.awt.geom包中的Ellipse2D. Double类来创建一个椭圆对象: Ellipse2D ellipse=new Ellipse2D. Double (50,30,300,50); 上述语句创建了一个外接矩形的左上角坐标是(50,30),宽是300,高是50的椭圆对象。

5.绘制圆弧 使用java.awt.geom包中的Arc2D. Double类创建一个圆弧对象: Arc2D ellipse=new Arc2D. Double (50,30,300,50,0,100,Arc.PIE); 上述语句创建了一个外接矩形的左上角坐标是(50,30),宽是300,高是50的起始角是0度终止角是100度的饼弧对象。其中,最后一个参数取值:Arc2D.OPEN、Arc2D.CHORD、Arc2D.PIE决定弧是开弧、弓弧和饼弧。

6.绘制二次曲线和三次曲线 二次曲线可用二阶多项式 y(x)=ax2+bx+c 来表示。一条二次曲线需要三个点来确定。使用java.awt.geom包中的QuadCurve2D.Double类来创建一个二次曲线: QuadCurve2D curve=new QuadCurve2D.Double (50,30,10,10,50,100); 上述代码片段使用端点(50,30)和(50,100)及控制点(10,10)创建了一条二次曲线。

7.旋转图形 我们有时需要平移、缩放或旋转一个图形,我们可以使用AffineTransform类来实现对图形的这些操作。 (1)首先使用AffineTransform类创建一个对象: AffineTransform trans=new AffineTransform(); 对象trans具有最常用的三个方法来实现对图形变换操作: translate(double a,double b) 将图形在x轴方向移动a 个单位 像素,y轴方向移动b个像素单位。a是正值时向右移动,负值是向左移动;b是正值时是向下移动,负值向上移动。 scale(double a,double b) 将图形在x轴方向缩放a倍,y轴方向缩放b倍。 rotate(double number,double x,double y) 将图形沿顺时针或逆时针以(x,y)为轴点旋转number个弧度。 (2)进行需要的变换,比如要把一个矩形绕点(100,100)顺时针旋转60度,那么就要先作好准备: trans.rotate(60.0*3.1415927/180,100,100); (3)把Graphics对象,比如g_2d设置为具有trans这种功能的“画笔”: g_2d.setTransform(trans); 假如rect是一个矩形对象,那么g_2d.draw(rect)画的就是旋转后的矩形

14.6 图形的布尔运算 假设T1、T2是两个图形,那么 T1和T2的布尔“与”(AND)运算的结果是两个图形的重叠部分。 T1和T2的布尔“或”(OR)运算的结果是两个图形的合并。 T1和T2的布尔“差”(NOT)运算的结果是T1去掉T1和T2的重叠部分。 T1和T2的布尔“异或”(XOR)运算的结果是两个图形的非重叠部分。

14.7 绘制钟表 钟表可以显示当前本机的时间。在这里我们要用到一个数学公式,如果一个圆的圆心是(0,0),那么对于给定圆上的一点(x,y),该点按顺时针旋转α弧度后的的坐标(m,n)由下列公式计算: m=x×cos(α)- y×sin(α) n=y×cos(α)+x×sin(α)

14.8 绘制图像 Toolkit类是一个抽象类,不能用构造方法直接创建这样对象,但Java运行环境提供了一个Toolkit对象,任何一个组件调用getToolkit()方法可以返回这个对象的引用。Tollkit类有一个获取图像的方法getImage(String s)。 Graphics 类提供的方法:   drawImage(Image img,int x,int y,ImageObserver observer):  绘制的Image对象;x、y是要绘制指定图像的矩形的左上角所处的位置,observer是加载图像时的图像观察器。

14.9 制作JPG图像 制作JPG图像步骤如下: 用java.awt.image包中的BufferedImage类(Image的子类)建立一个BufferedImage对象。 BufferedImage对象调用createGraphics()获得一个Graphics2D对象。 Graphics2D对象调用相应的方法在BufferedImage对象中绘制图形或图像。 JPEGCodec类调用createJPEGEncoder(OutPutStream out) 返回一个JPEGImageEncoder对象。 JPEGImageEncoder对象调用encode(Image image)方法将BufferedImage对象写入到输出流。