Java程序设计案例教程-第11章 Java绘图与动画.ppt





《Java程序设计案例教程-第11章 Java绘图与动画.ppt》由会员分享,可在线阅读,更多相关《Java程序设计案例教程-第11章 Java绘图与动画.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java程序设计案例教程第11章 Java绘图与动画第第11章章 Java绘图与动画绘图与动画第1页本章概述 本章的学习目标主要内容Java程序设计案例教程第11章 Java绘图与动画本章概述本章概述l图形图像与动画等多媒体技术是当今计算机信息领域的热图形图像与动画等多媒体技术是当今计算机信息领域的热门话题,而且已经成为计算机中最大的应用领域。有了图门话题,而且已经成为计算机中最大的应用领域。有了图形图像和动画,应用程序才变得丰富多彩,栩栩如生。传形图像和动画,应用程序才变得丰富多彩,栩栩如生。传统的统的Java绘图与动画主要由绘图与动画主要由AWT的的Graphics和和Graphics2D
2、类来实现的,新的类来实现的,新的GUI框架框架JavaFX也对绘图也对绘图和动画提供了强大的支持。本章将分别介绍传统的和动画提供了强大的支持。本章将分别介绍传统的Java绘绘图与动画技术,以及图与动画技术,以及JavaFX中的绘图与动画效果的应用。中的绘图与动画效果的应用。第2页Java程序设计案例教程第11章 Java绘图与动画本章的学习目标本章的学习目标l掌握掌握Graphics类提供的绘制图形的方法类提供的绘制图形的方法l了解了解Java2D绘图绘图l掌握传统的掌握传统的Java多线程实现的动画技术多线程实现的动画技术l了解消除动画中的闪烁的方法了解消除动画中的闪烁的方法l掌握掌握Jav
3、aFX的直接在画布上绘图的方法的直接在画布上绘图的方法l了解了解JavaFX的动画效果的动画效果第3页Java程序设计案例教程第11章 Java绘图与动画第4页主要内容主要内容11.1 传统的传统的Java绘图绘图11.2 显示图像与动画显示图像与动画11.3 JavaFX绘图与动画绘图与动画11.4 本章小结本章小结11.5 思考和练习思考和练习Java程序设计案例教程第11章 Java绘图与动画11.1 传统的传统的Java绘图绘图lJava的图形都是相对于窗口绘制的,可以是的图形都是相对于窗口绘制的,可以是applet的主窗口或子窗口,也可以是独立应用程的主窗口或子窗口,也可以是独立应用
4、程序窗口序窗口(基于基于Swing的窗口也支持这些方法的窗口也支持这些方法)。传统。传统的的Java绘图是使用绘图是使用AWT包中的包中的Graphics类和类和Graphics2D类提供的绘图方法来绘制简单的图形。类提供的绘图方法来绘制简单的图形。第5页Java程序设计案例教程第11章 Java绘图与动画图形直角坐标系统图形直角坐标系统l使用使用Java绘制图形时,采用以象素为单位的直角坐标系统,绘制图形时,采用以象素为单位的直角坐标系统,这是一种对屏幕上每个点进行定位的方案,默认情况下,这是一种对屏幕上每个点进行定位的方案,默认情况下,该坐标系统的圆点位于屏幕的左上角,向左延伸出该坐标系统
5、的圆点位于屏幕的左上角,向左延伸出X轴的轴的正方向,向下延伸出正方向,向下延伸出Y的正方向,这和其他的编程语言是的正方向,这和其他的编程语言是相同的。相同的。l所有的图形向窗口的输出都是通过图形上下文进行的。图所有的图形向窗口的输出都是通过图形上下文进行的。图形上下文是由形上下文是由Graphics类封装的,可以通过两种方式获类封装的,可以通过两种方式获得图形上下文:得图形上下文:作为参数通过方法传递,例如方法作为参数通过方法传递,例如方法paint()或或update()。通过通过Component的的getGraphics()方法返回。方法返回。第6页Java程序设计案例教程第11章 Ja
6、va绘图与动画Graphics类类lGraphics类是抽象类,它定义了大量方法,用于绘制各类是抽象类,它定义了大量方法,用于绘制各种类型的对象,例如直线、矩形和弧线。有的个方法只绘种类型的对象,例如直线、矩形和弧线。有的个方法只绘制对象的边框,有的方法则绘制填充的对象。对象以当前制对象的边框,有的方法则绘制填充的对象。对象以当前选择的图形颜色进行绘制和填充,默认是黑色。当对图形选择的图形颜色进行绘制和填充,默认是黑色。当对图形对象的绘制超出窗口的范围时,会自动剪裁输出。对象的绘制超出窗口的范围时,会自动剪裁输出。第7页Java程序设计案例教程第11章 Java绘图与动画Java2D图形图形l
7、Graphics类提供的方法只能绘制宽度为类提供的方法只能绘制宽度为1个象素的图形。个象素的图形。如果需要绘制宽度大于如果需要绘制宽度大于1个像素的图形,则需要使用个像素的图形,则需要使用Graphics2D。这是从。这是从JDK1.2版本开始增加的类,它扩展版本开始增加的类,它扩展了了Graphics类。类。Graphics2D在几个地方增强了在几个地方增强了Graphics提供的基本功能。为了使用这种扩展的功能,提供的基本功能。为了使用这种扩展的功能,需要将使用需要将使用paint()等方法获得的图形上下文强制转换成等方法获得的图形上下文强制转换成Graphics2D。lGraphics2
8、D提供了以下方法来设置绘图环境的属性。提供了以下方法来设置绘图环境的属性。void setBackground(Color color):设置绘图环境的背景颜色;:设置绘图环境的背景颜色;void setPaint(Paint paint):设置绘图环境的绘图颜色;:设置绘图环境的绘图颜色;void setStroke(Stroke s):设置绘图环境画笔的样式。:设置绘图环境画笔的样式。第8页Java程序设计案例教程第11章 Java绘图与动画Font 类类lFont类,即字体类,可以使用它来控制文本的字体及其样类,即字体类,可以使用它来控制文本的字体及其样式。式。Font类提供了将字符序列
9、映射到字形序列所需要的信类提供了将字符序列映射到字形序列所需要的信息,以便在息,以便在Graphics对象和对象和Component对象上呈现字形对象上呈现字形序列。序列。lFont类的构造方法如下:类的构造方法如下:Font(Font font);Font(String fontname,int style,int size);l其中,其中,fontname为字体名称,是字体集合中的某个字符为字体名称,是字体集合中的某个字符串,该字符串是某种字体的名称;串,该字符串是某种字体的名称;style为字体风格,是为字体风格,是Font类定义的静态常量,包括类定义的静态常量,包括Font.PLAIN
10、(下划线下划线),Font.BOLD(粗体粗体)和和Font.ITALIC(斜体斜体)等,可以是多个值等,可以是多个值的组合风格,如,的组合风格,如,Font.BOLD|Font.ITALIC可以指定加粗、可以指定加粗、斜体样式;斜体样式;size为字体的大小。为字体的大小。第9页Java程序设计案例教程第11章 Java绘图与动画Color类类lColor类用于封装默认类用于封装默认sRGB(standard Red Green Blue)颜色空间中的颜色,或者用于封装由颜色空间中的颜色,或者用于封装由ColorSpace标识的标识的任意颜色空间中的颜色。每种颜色都有一个隐式的任意颜色空间中
11、的颜色。每种颜色都有一个隐式的alpha值值1.0,或者有一个在构造方法中指定的,或者有一个在构造方法中指定的alpha值。值。alpha值定义了颜色的透明度,可用一个范围在值定义了颜色的透明度,可用一个范围在 0.01.0或或0255内的浮点数来表示它。内的浮点数来表示它。alpha值为值为1.0或或255则意味则意味着颜色完全不透明,着颜色完全不透明,alpha值为值为0或或0.0则意味着颜色完全则意味着颜色完全透明。透明。lColor类定义了一些静态颜色常量,如类定义了一些静态颜色常量,如YELLOW和和yellow都表示黄色,都表示黄色,BLUE和和blue表示蓝色等。表示蓝色等。第1
12、0页Java程序设计案例教程第11章 Java绘图与动画绘制简单图形绘制简单图形第11页Java程序设计案例教程第11章 Java绘图与动画Java2D绘图绘图l使用使用Graphics2D可以绘制更丰富的可以绘制更丰富的Java2D图形。图形。在绘制图形之前,通常需要使用在绘制图形之前,通常需要使用setStroke()方法方法设置绘图环境的画笔样式,通过设置绘图环境的画笔样式,通过setPaint()方法设方法设置绘图颜色。置绘图颜色。l通常使用通常使用BasicStroke类来指定画笔的宽度。类来指定画笔的宽度。BasicStroke类实现了类实现了Stroke接口,该类用来定接口,该类
13、用来定义直线的宽度、连接的样式、直线末端的样式以义直线的宽度、连接的样式、直线末端的样式以及虚线的样式。及虚线的样式。第12页Java程序设计案例教程第11章 Java绘图与动画Java2D绘图绘图lJava2D可以通过可以通过setPaint()方法来设置绘图颜色,方法来设置绘图颜色,本书介绍两个比较常用的:本书介绍两个比较常用的:GradientPaint和和TexturePaint。lGradientPaint用来定义线性渐变颜色用来定义线性渐变颜色lTexturePaint类用来定义填充的材质类用来定义填充的材质(texture),该类的构造方法如下:该类的构造方法如下:Texture
14、Paint(BufferedImage texture,Rectangle2D rect)l其中,其中,texture参数是一个参数是一个BufferedImage对象,对象,用来定义一个单位材质;用来定义一个单位材质;rect参数用来复制材质。参数用来复制材质。第13页Java程序设计案例教程第11章 Java绘图与动画Java2D绘图绘图第14页Java程序设计案例教程第11章 Java绘图与动画XOR绘图模式绘图模式l绘图模式指的是画笔的着色方式。默认的绘图模绘图模式指的是画笔的着色方式。默认的绘图模式为覆盖,即后绘制的图形将覆盖先前绘制的图式为覆盖,即后绘制的图形将覆盖先前绘制的图形。
15、形。Graphics类还提供了一种异或绘图模式,即类还提供了一种异或绘图模式,即XOR模式。用户可以通过模式。用户可以通过setXORMode()方法来方法来将当前的绘图模式设置为异或模式。从将当前的绘图模式设置为异或模式。从XOR模式模式返回到覆盖模式的方法是调用返回到覆盖模式的方法是调用setPaintMode()方方法。法。lXOR模式的优点是:新对象总是保证可见,而不模式的优点是:新对象总是保证可见,而不管在它上面绘制的颜色是什么。管在它上面绘制的颜色是什么。第15页Java程序设计案例教程第11章 Java绘图与动画XOR绘图模式绘图模式第16页Java程序设计案例教程第11章 Ja
16、va绘图与动画显示文本显示文本l除了绘制图形以外,除了绘制图形以外,Graphics类还提供了显示文本的方类还提供了显示文本的方法法drawString,在调用该方法显示文本时,还可以先设置,在调用该方法显示文本时,还可以先设置文本的颜色和字体。文本的颜色和字体。第17页Java程序设计案例教程第11章 Java绘图与动画第18页主要内容主要内容11.1 传统的传统的Java绘图绘图11.2 显示图像与动画显示图像与动画11.3 JavaFX绘图与动画绘图与动画11.4 本章小结本章小结11.5 思考和练习思考和练习Java程序设计案例教程第11章 Java绘图与动画11.2 显示图像与动画显
17、示图像与动画l图像是由专门的软件和截取图像的工具生成的二进制文件,图像是由专门的软件和截取图像的工具生成的二进制文件,按照不同存储图像数据形成了不同的图形种类,主要包括按照不同存储图像数据形成了不同的图形种类,主要包括bmp、gif、jpeg等几种,本节将介绍等几种,本节将介绍Java如何处理这些如何处理这些现有的图像资源。现有的图像资源。l虽然虽然Graphics类提供了大量的绘图方法,但是,如果用类提供了大量的绘图方法,但是,如果用它们来绘制比较复杂的图形,还是比较困难,所以对于复它们来绘制比较复杂的图形,还是比较困难,所以对于复杂的图像,还是通过其他图像处理软件处理好之后,然后杂的图像,
18、还是通过其他图像处理软件处理好之后,然后通过通过Graphics类的类的drawImage()方法将它加载并显示出来。方法将它加载并显示出来。第19页Java程序设计案例教程第11章 Java绘图与动画创建图像创建图像l图像的创建有多种方法,最简单的是从文件获取,通常使用图像的创建有多种方法,最简单的是从文件获取,通常使用ImageIO类的类的read方法来读取。该方法返回的是方法来读取。该方法返回的是BufferedImage对象,对象,BufferedImage是是Image的子类,它描述了具有可访问图像数据缓冲的子类,它描述了具有可访问图像数据缓冲区的区的Image。l如果没有图像文件,
19、还可以通过程序来生成一个图像,这就需要用到如果没有图像文件,还可以通过程序来生成一个图像,这就需要用到ImageProducer接口。该接口的定义在接口。该接口的定义在java.awt.image包中,该包中包中,该包中的的FilterImageSource和和MemoryImageSource类都实现了类都实现了ImageProducer接口。接口。lMemoryImageSource类用来在内存中生成图像,该类的构造方法如类用来在内存中生成图像,该类的构造方法如下:下:MemoryImageSource(int w,int h,int pixel,int offset,int scan)l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计案例教程-第11章 Java绘图与动画 Java 程序设计 案例 教程 11 绘图 动画

限制150内