1、第章图形图像处理网络资源:群:(编程清华版)(公共版)号:本章知识结构图本章知识结构图逐帧动画逐帧动画简单图片简单图片 作为一款注重用户体验的应用程序,当然离不开图形、图像的支持。在中对图形、图像提供了多种支持,一般使用和方法来封装和管理位图,通过和类来保存和控制逐帧动画,使用和两个类绘制各种各样的图形,其中,可以绘制一些常见的规则图形,而则用于绘制一些不规则、自定义的图形。静态图片即图片内容不发生变化的图片,通常用于显示、增添界面美观,例如图标、背景等。对于这种类型的图片通常由一些图片控件进行处理,如等。动态图片即内容、大小、位置等会随着时间而变化的图片,一般采用不断重新绘制的方式来处理,每
2、隔多少毫秒绘制一次,给人的感觉就是连续变化的。绘图接口结构 图片不仅可以使用等图片控件显示,也可以作为、等控件的背景。从广义的角度来看,应用中图片不仅包括*(首选)、*、*(不建议)等格式的位图,也包括使用资源文件定义的各种对象。逐帧动画是一种常见的动画形式,其原理是利用人的视觉的滞后性,在时间轴的每帧上绘制不同的内容,然后在足够短的时间内进行播放,给人的感觉就如同连续的动画。由于逐帧动画的帧序列内容不一样,这不但给制作增加了负担而且最终输出的文件量也很大,但它的优势也很明显:逐帧动画适合于表演细腻的动作。例如:人物走路、说话,动物奔跑等 简单图片和逐帧动画简单图片和逐帧动画逐帧动画逐帧动画简
3、单图片简单图片 简单图片和逐帧动画简单图片和逐帧动画 简单图片和逐帧动画简单图片和逐帧动画程程序序结结构构在中操作图片是通过类来完成的,类有很多子类,如类用于操作位图,类用于操作逐帧动画,类用于操作形状。不允许图片资源的文件名中出现大写字母,且不能以数字开头。需要指出的是,只是一个类型的常量,代表该对象的,如果在程序中需要获得实际的对象,则可以调用()方法再调用的()方法来获取。对象对象 简单图片简单图片 .和和 用于表示一张位图,用于封装一个对象。如果想将对象包装成对象,可以调用的构造方法。();如果需要获取包装的对象,可以调用的()方法。();简单图片简单图片类常用方法类常用方法方法描述(
4、,)(,)从原位图的指定坐标点()开始,截取宽为,长为的部分,创建一个新的对象(,)(,)创建一个宽为,长为的新位图()()获取位图的高度()()获取位图的宽度()()返回该对象是否已被回收()()强制一个对象立即回收自己 简单图片简单图片 是一个工具类,该类所有的方法都是静态方法,这些方法可以从不同的数据源来解析、创建对象,如资源、路径、文件和数据流等方式。方法描述(,)(,)从指定的字节数组的位置,将长度为的字节数据解析成对象()()从指定的文件中解析,创建一个对象(,)(,)从指定的资源中解析创建对象()()从指定的输入流解析,创建一个对象 简单图片简单图片类常用方法类常用方法.实现示例
5、 简单图片简单图片设置图片的缩放方式设置两个的上下间距 简单图片简单图片 ()();获取对象获取对象()();(),);获取草地背景的位图()设置触摸监听器(,)()();();()()();获取原图的缩放量()()();()()*);获取触摸的坐标对应原图上的位置()()*);()();对越界情况的处理()();();(,);以点击的位置为中心查看原图的局部细节(););.创建逐帧动画 创建逐帧动画的一般方法:先在程序中存放逐帧动画的素材,再在文件夹下创建一个文件夹,再在该文件夹下创建一个文档,在元素中添加元素来定义动画的全部帧。注意:也支持在代码中创建逐帧动画,调用的注意:也支持在代码中创
6、建逐帧动画,调用的()()方法即可,方法即可,类似于使用方法创建时的类似于使用方法创建时的。逐帧动画逐帧动画 其中:()属性定义动画是否循环播放。只播一次,不循环播放;循环播放。()元素定义每一张图片的内容和播放持续时间。指定内容,指定时间。()元素出现的顺序指定图片播放的顺序。也支持在代码中创建逐帧动画:调用的(,)方法即可,类似于使用方法创建时的。逐帧动画逐帧动画 .实现示例逐帧动画程序界面布局中定义了三个组件:两个和一个,两个用于控制逐帧动画的开始和停止,用于显示背景和逐帧动画。.实现示例逐帧动画逐帧动画为马的奔跑布局文件:布局文件:.实现示例逐帧动画 ()();()();()();()
7、();获取逐帧动画的对象()为“动画开始”按钮添加单击事件处理 ()();开始动画 );()为“动画停止”按钮添加单击事件处理 ()();停止动画 );两个按钮代码所在文件:两个按钮代码所在文件:.实现示例逐帧动画该程序在使用引用逐帧动画如果无需草地背景,也可以使用“将逐帧动画作为背景显示,在代码中将“()();”改为“().();”。首先在界面布局中添加控件。示例讲解要实现示例的在简单图片和逐帧动画界面中进行切换功能,需要利用控件。设置初始状态为然后在代码中为添加一个状态改变的监听器,状态为时显示简单图片的界面,状态为时显示逐帧动画的界面。示例讲解该示例完整的代码请参考 自定义绘图自定义绘图
8、 除了可以使用程序中的图片资源外,应用还可以自行绘制图形,也可以在运行时动态地生成图片,前面我们所讲的自定义控件就用到了自定义绘图。在应用中,和是两个绘图的基本类,使用这两个类几乎可以完成所有的绘制工作。:画布,图形系统最核心的一个类,作为参数传入()方法,完成绘制工作,该类提供了各种绘制方法,用于绘制不同的图形,例如点、直线、矩形、圆、文本、颜色、位图等。:画笔,用于设置绘制的样式、颜色等信息。 自定义绘图自定义绘图 第章介绍了如何自第章介绍了如何自定义控件定义控件本节介绍利用自定本节介绍利用自定义方法进行绘图的义方法进行绘图的相关类的使用。相关类的使用。示例:自定义绘图示例:自定义绘图的程
9、序。的程序。程序清单:程序清单:方法方法描述描述(,)(,)绘制弧形(,)(,)绘制位图(,)(,)绘制圆形(,)(,)绘制一条线(,)(,)绘制一个点(,)(,)绘制矩形(,)(,)绘制字符串 类常用方法类常用方法和方法方法描述描述()()设置透明度(,)(,)绘制颜色()()设置颜色()()设置渲染效果(,)(,)设置阴影()()设置画笔粗细()()设置画笔风格 类常用方法类常用方法和方法方法描述描述()()设置透明度(,)(,)绘制颜色()()设置颜色()()设置渲染效果(,)(,)设置阴影()()设置画笔粗细()()设置画笔风格 类常用方法类常用方法和 类的子类类的子类子类子类构造方法
10、构造方法描述描述(,)使用位图平铺的渲染效果(,)(,)使用线性渐变来渲染图形(,)(,)使用圆形渐变来渲染图形(,)(,)使用角度渐变来渲染图形(,)(,)使用组合效果来渲染图形方法方法描述描述(,)(,)为路径添加一个圆形轮廓(,)(,)为路径添加一个矩形轮廓()()将目前的轮廓闭合,即连接起点和终点(,)(,)从最后一个点到点()之间画一条线(,)(,)设置下一个轮廓的起点 类常用方法类常用方法和 类的子类类的子类子类子类构造方法构造方法描述描述()使用圆角来代替尖角,从而使用圆角来代替尖角,从而对图形尖锐的边角进行平滑对图形尖锐的边角进行平滑处理处理(,)创建一个虚线的轮廓创建一个虚线的轮廓(短横短横线小圆点线小圆点)(,)与相似,但是添加了随机性,与相似,但是添加了随机性,需要指定每一段的长度和与需要指定每一段的长度和与原始路径的偏离度原始路径的偏离度(,.)定义一个新的路径,并将其定义一个新的路径,并将其用作原始路径的轮廓标记用作原始路径的轮廓标记(,)添加两种效果,将两种效果添加两种效果,将两种效果结合起来结合起来(,)在路径上先使用第一种效果,在路径上先使用第一种效果,再在此基础上应用第二种效再在此基础上应用第二种效果果示例没有采用进行界面布局,而是直接使用代码布局示例讲解该示例完整的代码请参考