二维图像的处理.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 第6章 二维图像的处理 ---以游戏开发为主线 移动应用开发技术 - * - 本章目标 掌握Bitmap/BitmapFactory 认识位图缩放与图像变换 理解Canvas/Paint 了解View/SurfaceView 了解线程控制下的图像处理与动画 6.1 Android二维游戏开发视图 Android游戏开发中常用的三种视图:view视图、SurfaceView视图和GLSurfaceView视图。 View视图:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢。 SurfaceView视图:基于view视图进行拓展的视图类,更适合2D游戏的开发;是view的子类,类似使用双缓冲机制,在新的线程中更新画面所以刷新界面速度比view快。在一个新启动的线程中重新绘制画面,主动更新画面。 GLSurfaceView视图:基于SurfaceView视图再次进行拓展的视图类,是专用于3D游戏开发的视图;是SurfaceView的子类(openGL专用)。 6.1 Android二维游戏开发视图 ?(2)主动更新 需要一个单独的thread不停的重绘人的状态,例如一个人在一直跑动。避免阻塞main UI thread。所以显然view不合适,需要surfaceView来控制。 根据游戏特点,更新画面的类型一般分为以下两类: (1)被动更新画面的 画面的更新依赖于 onTouch 来更新,例如棋类游戏,可以直接使用 invalidate。 因为这种情况下,这一次Touch和下一次的Touch需要的时间比较长些,不会产生影响。 6.1.1 View视图框架 对于常规的游戏,在View中需要处理以下3种问题:控制事件、刷新View、绘制View。 6.1 Android二维游戏开发视图 (1)处理按键事件onKeyDown,屏幕触控onTouchEvent以及Sensor重力感应等方法。 (2)刷新view的方法这里主要有invalidate(int l,int t,int r,int b) 刷新局部,四个参数分别为左、上、右、下。 (3)绘制View主要是onDraw()中通过形参canvas来处理,相关的绘制主要有drawRect、drawLine、drawPath等。 6.1.2 Surface View视图框架 6.1 Android二维游戏开发视图 SurfaceView视图和View视图最本质的区别是View视图要在UI的主线程中更新画面,surfaceView视图是在一个新起的单独线程中可以重新绘制画面而,所以不会阻塞UI主线程。但这也带来事件同步的问题,也涉及到线程同步。 SurfaceView视图原理 在游戏中,一般不会等用户每次触发了按键事触屏事件才重绘画布,而是会定义一个时间去刷新画布;例如倒计时、动态的花草、流水等,这些游戏元素并不会跟玩家交互,但却都是动态的。所以游戏开发中,会有一个线程不停的去重绘画布,实时的更新游戏元素的状态。 6.1.2 Surface View视图框架 6.1 Android二维游戏开发视图 游戏中除用画布给玩家最直接的动态展示外,还有很多逻辑需要不间断地去更新,例如游戏中钱币的更新和AI(人工智能)行为等等。Android中的SurfaceView类就是双缓冲机制,开发采用自动刷新屏幕的游戏时尽量使用SurfaceView类,这样效率较高,而且SurfaceView类的功能也更加完善。 6.2 常用绘图类 在Android下进行2D绘图最常用的就是Paint类、Canvas类、Bitmap类和BitmapFactory类。其中Paint类代表画笔,Canvas类代表画布。 6.2.1画笔Paint Paint画笔是绘图的辅助类,一般它是作为画布的参数来实现相应的效果,Paint类中包含文字与位图的样式、颜色等属性信息。 6.2.2画布Canvas Canvas类提供了两个构造函数: Canvas():创建一个空的Canvas对象。 Canvas(Bitmap bitmap):创建一个以bitmap位图为背景的Canvas。 Canvas类提供了很多相应的drawXxx()方法,具有多种类型,可以画出点、线、矩形、圆形、椭圆、文字、位图等 。 6.2 常用绘图类 6.2.3 Bitmap类 Bitmap类代表位图,不仅可以获取图像文件信息,对图像进行剪切、旋转、缩放等操作,而且还可以指定保存图像文件格式。 6.2.4 BitmapFactory类 该类为

文档评论(0)

kch + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年10月08日上传了教师资格证

1亿VIP精品文档

相关文档