ImageVerifierCode 换一换
格式:PPT , 页数:30 ,大小:2.62MB ,
资源ID:2720887      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2720887.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(佛山科学技术学院android安卓二维图像的处置专题培训课件.ppt)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

佛山科学技术学院android安卓二维图像的处置专题培训课件.ppt

1、佛山科学佛山科学技术学院技术学院androidandroid安安卓二维图卓二维图像的处置像的处置-2-本章目标掌握Bitmap/BitmapFactory认识位图缩放与图像变换理解Canvas/Paint了解View/SurfaceView了解线程控制下的图像处理与动画6.1Android二维游戏开发视图Android游戏开发中常用的三种视图:view视图、SurfaceView视图和GLSurfaceView视图。View视图:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢。SurfaceView视图:基于view视图进行拓展的视图类,更

2、适合2D游戏的开发;是view的子类,类似使用双缓冲机制,在新的线程中更新画面所以刷新界面速度比view快。在一个新启动的线程中重新绘制画面,主动更新画面。GLSurfaceView视图:基于SurfaceView视图再次进行拓展的视图类,是专用于3D游戏开发的视图;是SurfaceView的子类(openGL专用)。6.1Android二维游戏开发视图(2)主动更新需要一个单独的thread不停的重绘人的状态,例如一个人在一直跑动。避免阻塞mainUIthread。所以显然view不合适,需要surfaceView来控制。根据游戏特点,更新画面的类型一般分为以下两类:(1)被动更新画面的画面

3、的更新依赖于onTouch来更新,例如棋类游戏,可以直接使用invalidate。因为这种情况下,这一次Touch和下一次的Touch需要的时间比较长些,不会产生影响。6.1.1View视图框架举例:调用自定义举例:调用自定义ViewView视图视图对于常规的游戏,在View中需要处理以下3种问题:控制事件、刷新View、绘制View。6.1Android二维游戏开发视图(1)处理按键事件onKeyDown,屏幕触控onTouchEvent以及Sensor重力感应等方法。(2)刷新view的方法这里主要有invalidate(intl,intt,intr,intb)刷新局部,四个参数分别为左、

4、上、右、下。(3)绘制View主要是onDraw()中通过形参canvas来处理,相关的绘制主要有drawRect、drawLine、drawPath等。6.1.2SurfaceView视图框架6.1Android二维游戏开发视图SurfaceView视图和View视图最本质的区别是View视图要在UI的主线程中更新画面,surfaceView视图是在一个新起的单独线程中可以重新绘制画面而,所以不会阻塞UI主线程。但这也带来事件同步的问题,也涉及到线程同步。SurfaceView视图原理在游戏中,一般不会等用户每次触发了按键事触屏事件才重绘画布,而是会定义一个时间去刷新画布;例如倒计时、动态的

5、花草、流水等,这些游戏元素并不会跟玩家交互,但却都是动态的。所以游戏开发中,会有一个线程不停的去重绘画布,实时的更新游戏元素的状态。6.1.2SurfaceView视图框架6.1Android二维游戏开发视图游戏中除用画布给玩家最直接的动态展示外,还有很多逻辑需要不间断地去更新,例如游戏中钱币的更新和AI(人工智能)行为等等。Android中的SurfaceView类就是双缓冲机制,开发采用自动刷新屏幕的游戏时尽量使用SurfaceView类,这样效率较高,而且SurfaceView类的功能也更加完善。举例:获取视图宽度和高度举例:获取视图宽度和高度6.2常用绘图类在Android下进行2D绘

6、图最常用的就是Paint类、Canvas类、Bitmap类和BitmapFactory类。其中Paint类代表画笔,Canvas类代表画布。6.2.1画笔PaintPaint画笔是绘图的辅助类,一般它是作为画布的参数来实现相应的效果,Paint类中包含文字与位图的样式、颜色等属性信息。6.2.2画布CanvasCanvas类提供了两个构造函数:Canvas():创建一个空的Canvas对象。Canvas(Bitmapbitmap):创建一个以bitmap位图为背景的Canvas。Canvas类提供了很多相应的drawXxx()方法,具有多种类型,可以画出点、线、矩形、圆形、椭圆、文字、位图等。

7、6.2常用绘图类6.2.3Bitmap类Bitmap类代表位图,不仅可以获取图像文件信息,对图像进行剪切、旋转、缩放等操作,而且还可以指定保存图像文件格式。6.2.4BitmapFactory类该类为一个工具类,用于从不同的数据源解析和创建Bitmap对象。6.2.5基础实例:游戏角色行走控制6.2常用绘图类本例实现对RGP类型的游戏人物行走进行控制。人物行走图片素材人物行走实例运行界面6.3绘制2D图像Android提供了强大的二维图形库用于绘制2D图像,常用的是绘制几何图形、文本、路径和图片等。6.3.1绘制文本在开发游戏的过程中,特别是RPG(角色)类游戏时,显示文字信息多用绘制文本的方

8、式。举例:游戏中的对话界面举例:游戏中的对话界面6.3绘制2D图像6.3.2绘制几何图形Canvas类提供了丰富的绘制几何图形的方法,包括点、线、弧、圆形、矩形等。举例:绘制奥运五环举例:绘制奥运五环6.3绘制2D图像6.3.3绘制路径Android中绘制路径有创建路径和绘制定义好的路径两种方式。创建路径可以使用android.graphics.Path类实现。6.3.4绘制图片举例:绘制举例:绘制SDSD卡指定图像卡指定图像6.4图像特效在Android中可以为图像添加旋转、缩放、倾斜、平移和渲染等特效。postXXX()方法采用前乘的方式设置Matrix的值,设置的操作最先发生。在Andr

9、oidAPI中提供setXXX()、postXXX()、preXXX()三种方式:setXXX()方法用于直接设置Matrix的值,每使用一次,整个Matrix都会改变;postXXX()方法采用后乘的方式设置Matrix的值,可以连续多次使用post以完成多个变换6.4.1旋转图像6.4图像特效使用android.graphics.Matrix类提供的setRotate()、postRotate()和preRotate()三个方法。举例:应用举例:应用MatrixMatrix旋转图像旋转图像使用android.graphics.Matrix类提供的setScale()、postScale()

10、和preScale()三个方法。6.4.2缩放图像举例:应用举例:应用MatrixMatrix缩放图像缩放图像使用android.graphics.Matrix类提供的setSkew()、postSkew()和preSkew()三个方法。6.4.3倾斜图像举例:应用举例:应用MatrixMatrix倾斜图像倾斜图像6.4图像特效使用android.graphics.Matrix类提供的setTranslate()、postTranslate()和preTranslate()三个方法。Android中渲染图像主要应用BitmapShader类,创建该类对象可通过以下的构造方法:BitmapSha

11、der(Bitmapbitmap,Shader.TileModetileX,Shader.TileModetileY)其中bitmap参数用于指定一个位图对象;tileX参数用于指定水平方向图像的重复方式;tileY参数用于指定垂直方向图像的重复方式。注意:Shader.TileMode类型的参数包括CLAMP(用边界颜色填充剩余空间)、MIRROR(镜像方式)和REPEAT(重复方式)3个可选值。6.4.4平移图像举例:应用举例:应用MatrixMatrix平移图像平移图像6.4.5渲染图像举例:应用举例:应用BitmapShaderBitmapShader渲染图像渲染图像6.5剪切区域6.

12、5.1剪切区域原理剪切区域也称可视区域,是由画布进行设置的,指的是在画布上设置一块区域,设置了可视区域以后,将看不见区域以外绘制的任何内容。6.5.2基础实例1:RPG游戏地图生成本例实现二维RGP类型游戏中地图的编辑与生成。RPG游戏地图素材MapWin软件界面游戏地图生成实例运行界面6.5剪切区域6.5.3基础实例2:游戏中的自动滚屏本例实现射击类游戏或过关类游戏中背景的自动滚动。自动滚屏背景素材自动滚屏实例运行界面6.6游戏动画在Android中提供了逐帧动画和补间动画两种动画类型,均可以在XML文件中定义动画资源文件。另外,也可以通过重写Animation的applyTransform

13、ation()函数实现自定义动画效果。6.6.1逐帧动画逐帧动画就是按顺序播放静态图像,先要在定义一组生成动画的图片资源。!此处省略部分 标记-举例:奔跑的小动物举例:奔跑的小动物6.6游戏动画6.6.2补间动画补间动画是通过对场景里的对象不断做图像变换(平移、缩放、旋转)来产生动画效果。在实现补间动画时,只需要定义动画开始和结束的关键帧。举例:补间动画实例举例:补间动画实例在Android中,提供了透明度渐变动画、旋转动画、缩放动画和平移动画四种补间动画。重写Animation的applyTransformation()函数,然后通常要实现initialize()函数,这是一个回调函数,告诉

14、Animation目标View的大小,可以初始化一些相关的参数。在绘制动画的过程中会反复的调用applyTransformation()函数,参数interpolatedTime值(值为从0到1)在每次调用中都会变化。6.6.3自定义动画举例:自定义动画实例举例:自定义动画实例6.7综合实例一:小小弹球功能描述关键技术本例实现一款简单弹球游戏,利用触屏控制底部弹板弹起小球;游戏失败后,再次触屏可以重启游戏。本例实现的关键是Timer类的使用和小球与边界、弹板是否接触的计算。代码如下所示:final Timer timer=new Timer();timer.schedule(new Timer

15、Task()Overridepublic void run()if(ballX=(screen_width-ball_size)xSpeed=-xSpeed;if(ballY=(rectY-ball_size)&ballX=rectX&ballX=(rectY-ball_size)&(ballX (rectX+rect_width)isGameOver=true;timer.cancel();ballX+=xSpeed;ballY+=ySpeed;Message msg=new Message();msg.what=1;handler.sendMessage(msg);,0,300);new

16、Thread(this).start();6.7综合实例一:小小弹球实例拓展为游戏添加背景图,用图片资源替换游戏中采用绘图函数实现的小球和弹板;用重力传感器控制弹板移动。弹球图片素材弹球实例运行界面6.7综合实例二:动态游戏导航界面功能描述关键技术本例实现一个图形化的动态游戏菜单界面。本例实现的关键是根据游戏不同的状态标识绘制不同的界面。代码如下所示:private void drawMenu(Canvas canvas)canvas.drawBitmap(menu0,0,0,paint);/绘制菜单界面背景canvas.clipRect(240,260,240+menu1.getWidth(

17、)/6,260+menu1.getHeight();/剪切菜单项区域canvas.drawBitmap(menu1,240-menuIndex*menu1.getWidth()/6,260,paint);/绘制当前菜单项canvas.clipRect(205,350,234,370,Op.UNION);/剪切左切换按钮区域canvas.drawBitmap(menu2,205,350,paint);/绘制左切换按钮canvas.clipRect(290,350,319,370,Op.UNION);/剪切右切换按钮区域canvas.drawBitmap(menu2,290,330,paint);

18、/绘制右切换按钮/剪切花瓣区域 canvas.clipRect(flowerX,flowerY,flowerX+15,flowerY+15,Op.UNION);canvas.drawBitmap(flowerframeIndex,flowerX,flowerY,paint);/绘制花瓣 实例拓展6.7综合实例二:动态游戏导航界面实现游戏处于菜单状态下多数花瓣不断飘落的效果。游戏动态导航花瓣效果6.7综合实例三:打地鼠功能描述关键技术本例实现一个打地鼠游戏。在一个有多个“洞穴”的场景中,每个“洞穴”随机显示地鼠,用户可以用手触摸出现的地鼠。如果触摸到则该地鼠不再显示,同时在屏幕上通过消息提示框显

19、示打到了几只地鼠。本例实现的关键是如何在指定的位置随机显示地鼠,这里主要是通过线程与消息处理进行控制。首先使用Thread线程对象记录地鼠出现的位置,然后通过Handler消息控制地鼠的出现。通过Handler消息控制地鼠出现的关键代码如下所示:handler=new Handler()Overridepublic void handleMessage(Message msg)int index=0;if(msg.what=0 x101)index=msg.arg1;/获取位置索引值mouse.setX(positionindex0);/设置X轴位置mouse.setY(positionind

20、ex1);/设置Y轴位置mouse.setVisibility(View.VISIBLE);/设置地鼠显示 super.handleMessage(msg);使用Thread线程对象记录地鼠出现位置的关键代码如下所示:6.7综合实例三:打地鼠Thread t=new Thread(new Runnable()Overridepublic void run()int index=0;/创建一个记录地鼠位置的索引值while(!Thread.currentThread().isInterrupted()index=new Random().nextInt(position.length);/产生一

21、个随机数Message m=handler.obtainMessage();/获取一个Messagem.what=0 x101;/设置消息标识m.arg1=index;/保存地鼠标位置的索引值handler.sendMessage(m);/发送消息try Thread.sleep(new Random().nextInt(500)+500);/休眠一段时间 catch(InterruptedException e)e.printStackTrace(););t.start();/开启线程打地鼠游戏图片素材打地鼠游戏运行界面6.7综合实例四:游戏中的瞄准镜功能描述关键技术本例实现射击类游戏中瞄准

22、镜随触屏手指移动的效果。实现本例的关键是对放大图像的局部抠取及平移放大图像时矩阵位置的计算。创建圆形图像的关键代码如下所示:shader=new BitmapShader(bitmap_bg_big,TileMode.CLAMP,TileMode.CLAMP);shapeDrawable=new ShapeDrawable(new OvalShape();/创建圆形的ShapeshapeDrawable.setBounds(0,0,RADIUS*2,RADIUS*2);/设置圆的外切矩形shapeDrawable.getPaint().setShader(shader);/设置画笔形状平移矩阵

23、新位置计算的代码如下所示:matrix.setTranslate(RADIUS-x*FACTOR,RADIUS-y*FACTOR);/平移矩阵shapeDrawable.getPaint().getShader().setLocalMatrix(matrix);shapeDrawable.setBounds(x-RADIUS,y-RADIUS,x+RADIUS,y+RADIUS);/圆外切矩形 瞄准镜实例图片素材瞄准镜实例运行界面6.7综合实例五:发疯的小猪功能描述关键技术本例实现一只小猪在围栏内左右两个方向来回奔跑,折返条件是碰到围栏的边缘。在实现本例过程中,最关键的技术就是通过动画形式显示

24、小猪的奔跑状态,这里主要用到Animation对象获取动画资源,通过重写该对象的onAnimationEnd()方法并调用startAnimation()方法实现小猪奔跑状态的切换及动画的播放。发疯小猪系列图片素材发疯小猪实例运行界面6.7综合实例六:开心涂鸦功能描述关键技术本例实现一个代表白板的空白区域,用户可以通过菜单选择画笔在白板上随意绘制(文字和各种图案等),并能够将绘制的内容保存到SD卡中。在实现过程中,主要用到的是保存画板内容时,调用Bitmap类的compress()方法将绘图内容压缩为PNG格式输出到文件输出流对象中。关键代码如下所示:public void saveBitma

25、p(String fileName)throws IOException File file=new File(/sdcard/pictures/+fileName+.png);/创建文件对象file.createNewFile();/创建一个新文件FileOutputStream fileOS=new FileOutputStream(file);/创建一个文件输出流对象/将绘图内容压缩为PNG格式输出到输出流对象中cacheBpress(Bitmap.CompressFormat.PNG,100,fileOS);fileOS.flush();/将缓冲区中的数据全部写出到输出流中fileOS.close();/关闭文件输出流对象作业:P198-2(2)、(4)要求写出关键程序代码

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服