![面向对象程序设计-Java(第四版)课件 第13章 Java 2D渲染_第1页](http://file4.renrendoc.com/view5/M01/29/38/wKhkGGZrxY2AO0zpAAER35juALE989.jpg)
![面向对象程序设计-Java(第四版)课件 第13章 Java 2D渲染_第2页](http://file4.renrendoc.com/view5/M01/29/38/wKhkGGZrxY2AO0zpAAER35juALE9892.jpg)
![面向对象程序设计-Java(第四版)课件 第13章 Java 2D渲染_第3页](http://file4.renrendoc.com/view5/M01/29/38/wKhkGGZrxY2AO0zpAAER35juALE9893.jpg)
![面向对象程序设计-Java(第四版)课件 第13章 Java 2D渲染_第4页](http://file4.renrendoc.com/view5/M01/29/38/wKhkGGZrxY2AO0zpAAER35juALE9894.jpg)
![面向对象程序设计-Java(第四版)课件 第13章 Java 2D渲染_第5页](http://file4.renrendoc.com/view5/M01/29/38/wKhkGGZrxY2AO0zpAAER35juALE9895.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第13章Java2D渲染13.1Java2DAPI基本概念
13.2绘制文字13.3Color类
13.4绘制基本几何图形(1)用于显示设备和打印机的统一渲染模型;
(2)渲染任何几何形状(曲线、矩形、椭圆等)的机制;
(3)图形、文本和图像渲染时的碰撞检测机制;
(5)提供了渲染重叠对象的机制;
(6)增强颜色支持;
(7)支持复杂文档的打印;
(8)通过渲染提示控制渲染质量。13.1Java2DAPI基本概念Java2DAPI提供的主要功能1.组成Java2DAPI的主要包
java.awt:包含用于创建用户界面和绘制图形和图像的所有类;
java.awt.geom:提供Java2D类,提供标准图形的完整集合,例如点,线,矩形,弧形,椭圆和曲线等。任何形状都可以通过组合这些基本几何图形绘出;
java.awt.font:提供与字体相关的包;
java.awt.color:为颜色空间提供的包;
java.awt.image:用于创建和修改图像的包;
java.awt.image.renderable:用于图像渲染的包;
java.awt.print:包含支持打印所有基于Java2D的文本、图形和图像的包。Java2DAPI提供的主要包和类及坐标系2.Java2DAPI坐标系
Java2DAPI维护两个坐标系:
①设备坐标系:例如:屏幕、窗口或打印机等输出设备的坐标系;
②用户坐标系:独立于设备的逻辑坐标系,是应用程序使用的坐标系,所有传递到Java2D
渲染流程中的几何图形都使用用户坐标系。3.java.awt.Graphics与java.awt.Graphics2D类
①java.awt.Graphics:Graphics类是所有图形处理的基础,是所有图形上下文的抽象父类,允许应用程序在组件以及屏幕图像上进行绘制。这个类提供了建立字体、设定显示颜色、显示图像和文本、绘制和填充各种几何图形、剪贴图像等操作。
②java.awt.Graphics2D:Graphics2D类是Graphics类的子类,是Graphics的加强版,拥用更强大的二维图形处理能力,通过添加或改变图形的状态属性,可以指定画笔宽度和画笔的连接方式;设定平移、旋转、缩放或修剪变换图形;设定填充图形的颜色和图案等,实现对几何形状、坐标转换、颜色管理以及文字布局等更精确的控制。Java2DAPI为不同设备提供了统一的渲染模型,不管目标设备是打印机还是屏幕,渲染过程在API层次都是一样的Java2D渲染1.Graphics2D渲染方法(1)draw方法:使用stroke
和
paint属性渲染几何图形的边框;(2)fill方法:使用paint
属性,用特定颜色或图案填充图形;
(3)drawString方法:使用font
属性渲染文本,通过font属性将字符串转换为图形,然后通过paint属性填充颜色;(4)drawImage方法:渲染图像。2.Graphics2D渲染上下文包含的主要属性(1)Paint属性:设置图形或文字的颜色;(2)Stroke属性:控制线条的宽度、笔形样式、线段连接方式或短划线图案等;(3)Fill属性:实现用纯色、渐变或其他模式填充图形;(4)Font属性:将文本字符串转换成图形;(5)Transform属性:实现图形平移、缩放及移位等操作;(6)Composite属性:实现图形合成区域的效果;(7)Clipping属性:实现剪裁效果。Jpanel容器上的Java2D
渲染1.Java2D
渲染所涉及的主要包及类的继承关系2.Java2D渲染的程序结构(1)创建画框及画板对象publicclass主类名{publicstaticvoidmain(String[]args){JFrameMyJFrame=newJFrame();//创建画框对象(窗体)MyJFrame.setTitle(Name);//设置画框标题MyJFrame.setsize(WIDTH,HEIGHT);//设置画框大小//当退出画框时退出程序MyJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);MyJFrame.setLocationRelativeTo(null);//把画框位置设置到屏幕的中心MyJPanelJP1=newMyJPanel();//创建JPanel类的画板对象JP1MyJFrame.add(JP1);
//添加JP1画板到MyJFrame画框中MyJFrame.setVisible(true);//设置MyJFrame画框可见;}}(2)JPanel画板上进行Java2D渲染classMyJPanelextendsJPanel{/**1.MyJPanel是一个画板类2.Graphicsg把
g理解成画笔3.Graphic2Dg2把
g2理解成画笔
*/publicvoid
paint(Graphicsg){super.paint(g);//调用了父类的方法完成初始化//将Graphics
对象转换成Graphics2D
对象Graphics2Dg2=(Graphics2D)g;……//使用Graphics2D类提供的图形、文本、图像方法实现2D渲染
……}
}(3)paint()方法Java.awt.Component类中提供了两个与Java2D渲染有关的重要方法:
①
paint(Graphicsg):绘制组件的外观;②
repaint():刷新组件外观。注意:当组件第一次在屏幕上显示时,程序会自动调用paint()方法,当窗体最小化然后又被显示时、或者窗体被拉伸时、或者repaint()方法被调用时、程序会自动调用paint()方法。13.2绘制文字绘制文字的成员方法成员方法参数说明功
能drawChars(char[]ch,intoffset,intnumber,intx,inty)ch是字符数组名;offset是要绘制的第一个字符在数组中的下标;number是要绘制的字符个数;x,y是起始坐标从ch数组下标为offset的位置开始截取number个字符,从坐标x,y处开始用当前的字体和颜色绘制number个字符drawBytes(byte[
]by,intoffset,intnumber,intx,inty)by是字节数组名;offset是要绘制的第一个字符在数组中的下标;number是要绘制的元素个数;x,y是起始坐标从by数组下标为offset的位置开始取number个字节,从坐标x,y处开始用当前的字体和颜色绘制number个字符成员方法参数说明功
能drawString(Strings,intx,inty)s是字符串对象;x,y为整型的起始坐标以坐标x,y为起始位置,用当前的字体绘制string代表的字符串drawString(Strings,floatx,floaty)s是字符串对象;x,y为浮点型的起始坐标以坐标x,y为起始位置,用当前的字体绘制string代表的字符串
【示例程序C13_1.java】使用Graphics2D类的成员方法绘制“WELCOMETOXI’AN”。Font类1.
Font类的构造方法Font(Fontfont)根据指定font创建一个新Font。Font(Stringname,intstyle,intsize)根据字体类型、样式和大小创建一个新Font。其中:Name:字体类型,如宋体、黑体、楷体、Arial、Courier、TimesRoman、Helvetica等;Style:字体样式,如下:Font.PLAIN(普通)、Font.BOLD(加粗)、Font.ITALIC(斜体)及Font.BOLD+
Font.ITALIC(粗斜体);Size:字体大小。2.
Font类的成员方法成员方法功能说明staticFontdecode(Stringstr)使用传递进来的名称获得指定的字体StringgetFamily()获得指定平台的字体名StringgetName()获得字体的名称intgetStyle()获得字体的样式intgetSize()获得字体的大小StringtoString()将此对象转换为一个字符串表示3.设置字体可以用java.awt.Graphics类的成员方法来设置自己希望使用的字体,其格式如下:setFont(FontmyFont);4.自定义字体绘制文字的步骤自定义字体绘制文字的步骤如下:(1)创建Font类对象,指定字体类型、字体样式及字体大小;(2)使用
setFont()设置创建好的Font类对象;(3)调用drawString()方法绘制文字。
【示例程序C13_2.java】绘制文字如图13.4所示,使用不同的字体绘制文字。
【示例程序C13_3.java】获取字符串的字体信息。13.3Color类Color类的构造方法
java.awt.Color类的构造方法构造方法功能说明Color(intr,intg,intb)使用0-255指定红色、绿色和蓝色值,创建一个不透明的Color对象。Color(intr,intg,intb,inta)使用0-255指定红色、绿色和蓝色及alpha值,创建Color对象。Color(floatr,floatg,floatb)使用0.0-1.0指定红色、绿色和蓝色值,创建一个不透明的Color对象。Color(floatr,floatg,floatb,floata)使用0.0-1.0指定红色、绿色和蓝色及alpha值,创建一个的Color对象。Color(intrgb)使用指定的组合RGB值创建Color对象。RGB色彩模式是目前运用最广的颜色标准,通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加就可以得到千万种颜色。
由于三种颜色通道的取值范围为0~255(表示颜色的亮度)。所以256级的RGB色彩总共能组合出约1678万种色彩(256×256×256=16777216)。
Color类的构造方法中第四个参数是alpha值,表示颜色的透明程度。当alpha值为255时,表示完全不透明,alpha值0时,表示完全透明。Color类的数据成员常量颜色数据成员常量颜
色RGB值staticColorred红255,0,0staticColorgreen绿0,255,0staticColorblue蓝0,0,255staticColorblack黑0,0,0staticColorwhite白255,255,255staticColoryellow黄255,255,0staticColororange橙255,200,0staticColorcyan青蓝0,255,255staticColormagenta洋红255,0,255staticColorpink淡红色255,175,175staticColorgray灰128,128,128staticColorlightGray浅灰192,192,192staticColordarkGray深灰64,64,64Color类的成员方法成员方法功能说明intgetRed()获得红色通道值intgetGreen()获得绿色通道值intgetBlue()获得蓝色通道值intgetRGB()获取颜色的RGB、alpha通道的值getAlpha():获取alpha通道值Colorbrighter()获取此颜色的一种更亮版本Colordarker()获取此颜色的一种更暗版本用Java.awt.Graphics2D类的方法设定颜色或获取颜色。setBackground(Colorc)设置Graphics2D上下文的背景色;setPaint(Paint
paint)为Graphics2D上下文设置Paint属性;getPaint()返回Graphics2D上下文的当前Paint;getBackground()返回用于清除区域的背景色。应用举例
【示例程序C13_4.java】绘制如图13.6所示,设置字符串的画板颜色及画笔颜色。绘制几何图形的方法有两种:一种是使用draw方法渲染几何图形的边框;另一种是使用fill方法用特定颜色或图案填充几何图形。
渲染几何图形的边框的绘制步骤如下:
(1)创建一个Graphics2D类的对象;
(2)创建一个几何图形类geom的对象shape;
(3)按要求设置Graphics2D的属性;
(4)调用Graphics2D类对象的draw(shape)方法呈现几何图形。
用特定颜色或图案填充几何图形也可分为4步,其中前3步与渲染几何图形的边框的绘制步骤相同,只是在第(4)步中调用的是Graphics2D类的对象fill(shape)方法。13.4绘制基本几何图形绘制几何图形的方法与步骤绘制线段与矩形用到的构造方法
绘制线段与矩形
【示例程序C13_5.java】如图13.7所示,设置JPanel画板的颜色(背景色)及笔的颜色(前景色),绘制直线、二次曲线及三次曲线。
【示例程序C13_6.java】如图13.8所示,绘制圆角矩形和非圆角矩形,再用特定颜色绘制填充的圆角矩形和非圆角矩形。创建椭圆及弧类对象的构造方法
绘制椭圆、圆及弧start为起始角度,extent为弧角度,type为弧的连接类型。弧角度extent用度数来衡量,表示从起始角度转多少角度画弧,extent为正,表示逆时针画弧,extent为负,表示顺时针画弧。
弧的连接类型:
OPEN表示弧两端点无连接(弧),
CHORD表示弧的两端点用直线连接(弦),PIE表示弧两端连接成扇形。
【示例程序C13_7.java】如图13.9所示,绘制椭圆、圆及扇形。绘制任意图形如果要绘制更复杂的几何图形,例如多边形、折线或星形,则需要使用java.awt.geom包中GeneralPath类。GeneralPath类表示由直线、二次曲线和三次曲线(Bézier)构成的几何路径。它可以包含多个子路径。构造方法功能说明GeneralPath()构造一个新
GeneralPath
对象。如果对此路径执行的操作需要定义路径内部,则使用默认的NON_ZERO缠绕规则GeneralPath(int
rule)构造一个新
GeneralPath
对象,使其具有指定缠绕规则以控制需要定义路径内部的操作。GeneralPath(int
rule,int
initialCapacity)构造一个新
GeneralPath
对象,使其具有指定的缠绕规则和指定的初始容量,以存储路径坐标。GeneralPath(Shape
s)根据任意
Shape
对象构造一个新
GeneralPath
对象。此路径的所有初始几何形状和缠绕规则均取自指定的
Shape
对象。1.创建GeneralPath类对象的构造方法rule为环绕规则
(1)WIND_EVEN_ODD:一种用于确定路径内部的奇偶缠绕规则。
(2)WIND_NON_ZERO:一种用于确定路径内部的非零缠绕规则。(默认)
WIND_NON_ZERO;initialCapacity为坐标点总个数。
Shape
ss为指定的
Shape
对象。此路径的所有初始几何形状和缠绕规则均取自指定的
Shape
对象。成员方法功能说明append(Shape
s,boolean
connect)
将指定
Shape
对象的几何形状追加到路径中,可能使用一条线段将新几何形状连接到现有的路径段。closePath()
关闭当前路径curveTo(floatx1,floaty1,floatx2,floaty2,floatx3,floaty3)将由三个新点定义的曲线段添加到路径中。lineTo(float
x,float
y)向当前路径添加直线段moveTo(floatx,floaty)将路径的当前坐标点移动到指定坐标(x,y)点。quadTo(floatx1,floaty1,floatx2,floaty2)将由两个新点定义的曲线段添加到路径中。2.GeneralPath类常用的成员方法3.折线绘制
绘制步骤:(1)创建折线点的坐标数组intx[]={x1,x2,x3,x4,…};inty[]={y1,y2,y3,y4,…};(2)创建GeneralPath类对象GeneralPathpolyline=newGeneralPath(GeneralPath.WIND_EVEN_ODD,x.length);(3)使用GeneralPath类对象polyline的moveTo()方法将画笔移动到指定坐标点polyline.moveTo(x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 强化合规经营管理规避经营风险隐患
- 构建智能物流系统优化配送效率
- 2025年离合器主缸合作协议书
- 西安机械加工生产服务合同
- 化妆品行业产品品质追溯系统建设方案
- Perfluoro-2-5-dimethyl-3-6-dioxanonanoic-acid-生命科学试剂-MCE
- Fumonisin-B1-Standard-生命科学试剂-MCE
- D-Psicose-Standard-生命科学试剂-MCE
- 电镀培训资料
- 3-Benzyl-8-9-dimethoxy-5-2-methylbenzyl-thio-imidazo-1-2-c-quinazolin-2-3H-one-生命科学试剂-MCE
- 老年髋部骨折患者围术期下肢深静脉血栓基础预防专家共识(2024版)解读 课件
- 三年级上册竖式计算练习300题及答案
- 数据结构英文教学课件:chapter7 Searching
- 护理核心制度及重点环节-PPT课件
- 夹套管现场施工方法
- 第三章走向混沌的道路
- 2006年事业单位工资改革工资标准表及套改表2
- 幼儿园中班体育活动动作目标及指导要点
- 江苏省特种设备安全条例2021
- 加速器控制 中国科学技术大学国家同步辐射实验室
- 民事庭审笔录
评论
0/150
提交评论