




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章MIDP图形用户界面低级API,本章学习导航,本章学习要点,(1)Canvas类概述;(2)处理Canvas类键盘事件;(3)处理Canvas类屏幕事件;(4)Graphics类概述;(5)Graphics类的绘图操作;(6)Graphics类的颜色操作;(7)Graphics类的文字操作;(8)Graphics类的图像操作。,7.1Canvas类的使用,使用javax.microedition.lcdui包中的低级API,可以实现一些相对比较复杂的图形或者访问底层输入事件。进行低级API开发时主要用到两个类:Canvas类和Graphics类。Canvas类是一个抽象类,利用Canvas类提供的相关方法可以处理低级事件和在屏幕上绘画。,Canvas类概述,7.1Canvas类的使用,Canvas类常用方法,7.1Canvas类的使用,Canvas实例,【例7-1】第一个Canvas程序(FirstCanvasDemo.java),教师演示讲解,7.1Canvas类的使用,Canvas处理按键事件是通过keyPressed方法、keyReleased方法和keyRepeated三个方法实现的。在开发的时候一定要用Canvas.hasRepeatedEvents方法来进行实际的检测,看是否支持keyRepeated方法。,键盘事件,7.1Canvas类的使用,Canvas键盘事件实例,【例7-2】演示Canvas的键盘事件(FirstCanvasDemo.java),教师演示讲解,7.1Canvas类的使用,Canvas有两种模式,一种是正常模式,另一种是全屏模式,两者之间的区别在于当我们使用全屏幕模式的时候,添加在Canvas上面的Title和Ticker和Command都无法在屏幕上显示,而正常模式下可以。利用Canvas的setFullScreenMode方法可以设定Canvas的模式。当我们调用setFullScreenMode方法的时候,不管是什么模式,都会调用sizeChanged这个方法,并传入屏幕的高度和宽度作为其参数。对于某些突发事件(如:来电),手机屏幕会被系统画面所覆盖的时候,就会调用hideNotify方法;当恢复原状时,就会调用我们原本的画面,那么系统就会同时调用showNotify()这个方法。在实际操作过程当中,应该覆写这两个方法,以便在可见性变化时,使程序做出相应的反应。Canvas会在它被显示的时候自动调用paint()方法,所以我们不必去显式的调用repaint()方法。,屏幕事件,7.1Canvas类的使用,Canvas屏幕事件实例,【例7-3】演示Canvas的屏幕模式(FirstCanvasDemo.java),教师演示讲解,7.2Graphics类的使用,javax.microedition.lcdui包中的Graphics类提供了简单的2D绘图功能。它具有24位深度颜色的绘制能力,以三原色分别占一个字节表示其颜色。Graphics的各种绘图功能是通过该类提供的各种方法来实现的,Graphics类的常用方法见表7-3。,Graphics类概述,7.2Graphics类的使用,Graphics类常用方法,7.2Graphics类的使用,MIDlet程序中使用最多的图像模式是PNG(PortableNetworkGraphics,可移植的网络图像)PNG格式可以提供透明背景的图像(方便于绘制游戏画面等)PNG格式的图片中包含许多定义其图片特性的冗余信息,可以方便的对图片进行分割和合并。,7.2Graphics类的使用,Graphics绘图时用到的坐标系和平时数学中用到的坐标系不一样,Graphics类坐标系的坐标原点在屏幕的左上角,x坐标自左向右递增,y坐标自上向下递增。,绘图操作坐标概念,7.2Graphics类的使用,使用Graphics类绘制的直线有两种类型:其中SOLID表示绘制实线;DOTTED表示绘制虚线,绘制的直线类型可以通过setStrokeStyle方法进行设置。,绘图操作绘制直线,【例7-4】演示利用Graphics类绘制直线(DrawLineDemo.java),7.2Graphics类的使用,Graphics类绘图实例,【例7-5】演示利用Graphics类绘制各种图形(DrawLineDemo.java),教师演示讲解,7.2Graphics类的使用,颜色操作,在利用Grahpics类进行绘图操作时,我们经常要给图形添加各种各样的颜色。图形的颜色的设置可以通过setColor方法实现。对于具体的颜色中的R(红)、G(绿)、B(蓝)的组成可以分别使用getRedComponent方法、getGreenComponent方法和getBlueComponent方法来获得。,7.2Graphics类的使用,颜色操作实例,【例7-6】演示Graphics类的设置和获取颜色相关方法(ColorDemo.java),教师演示讲解,7.2Graphics类的使用,文字操作,在使用Graphics类绘制文字或输出图像时,无论是图像还是文字在Graphics中都是通过锚点(指文字和图像被开始绘制处的坐标)来控制它们具体的方位。,7.2Graphics类的使用,文字操作,锚点的具体位置如下图所示。,7.2Graphics类的使用,文字操作,锚点的具体位置如下图所示。有效的定位应该是这7个静态常量之一,或者通过逻辑运算符”|”连接的常量组合。,7.2Graphics类的使用,文字操作,利用Graphics类进行文字输出时,既可以使用drawString方法输出字符串,也可以使用drawChar方法输出字符。Graphics类中一共定义了4个方法来绘制文本。publicvoiddrawChar(charcharacter,intx,inty,intanchor)publicvoiddrawChars(chardata,intoffset,intlength,intx,inty,intanchor)publicvoiddrawString(Stringstr,intx,inty,intanchor)publicvoiddrawSubstring(Stringstr,intoffset,intlen,intx,inty,intanchor),7.2Graphics类的使用,文字操作字体,每个Graphics对象都有一个Font对象与其关联来进行文字的渲染操作,通过调用其相关方法可以对字体对象进行操作,例如:调用方法setFont(null)即可使字体恢复到默认状态。,7.2Graphics类的使用,文字操作实例,【例7-7】演示利用Graphics类输出文字的方法(DrawCharDemo.java),教师演示讲解,7.2Graphics类的使用,图像操作,Image分为可变和不可变两种类型的,不可变的Image是从资源文件、二进制数据、RGB数值及其他Image直接创建的。通过Image.createImage(Stringname)方法从指定的路径中读取需要创建Image所必须的数据(参数中的字符串必须以“/”打头,并且包括完整的名称)。可变的Image以给定的大小创建,它是可以修改的,可变的Image由Image.createImage(intwidth,intheight)方法来创建,需要给定长宽,Image的其他显示特性和机器的显示屏完全一致。在一些游戏程序中,经常会看到画面“撕裂”现象,即显示在屏幕上的画面会由前一帧画面的一部分和后一帧画面的一部分组成。这种“撕裂”现象产生的原因是因为显示屏在显示图像前都会先参照影象内存,然后当绘制速度慢到一定程度时,造成前后两帧内容的交叉(撕裂)。手机厂商考虑支持DoubleBuffer(双缓冲区)以避免画面撕裂的产生。利用Canvas的isDoubleBuffered方法可以检查硬件厂商是否在硬件上支持双缓冲区。,7.2Graphics类的使用,图像操作实例,【例7-8】演示利用Graphics类输出图像的方法(DrawImageDemo.java),教师演示讲解,【任务1】编写程序,利用Canvas类的keyPressed方法、keyReleased方法和keyReapeated来测试Canvas类的键盘事件。并思考键盘事件在游戏开发中有什么样的作用。【任务2】编写程序,利用两个Command对象和Ticker组件测试Canvas类的屏幕事件。并思考全屏幕模式和正常模式在游戏开发中的使用场合。,课堂实践,课堂实践7-1,【任务1】编写程序,利用Graphics类在手机屏幕中央输出三行“这是测试文字”,参考界面如图7-17所示。【任务2】编写程序,利用Graphics类在手机屏幕的中央输出指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省常熟市重点名校2024-2025学年初三一诊模拟数学试题含解析
- 忻州市保德县2025届三年级数学第二学期期末调研试题含解析
- 西安财经大学《中国古代文学作品选与中学语文(三)》2023-2024学年第一学期期末试卷
- 湖南医药学院《检测仪表与过程控制》2023-2024学年第二学期期末试卷
- 万科物业保洁培训计划
- 湛江市高三测试题(一)文综地理试卷
- 化学产品开发流程的8个关键步骤
- 化学实验室原始记录规范
- 2025版权转让协议合同范本
- 双肾囊肿护理查房
- 医院廉洁行医廉政教育专题课件
- 医务人员职业健康安全健康-课件
- 安全组织机构图
- 旧石器时代考古-基础知识课件
- 江苏省建设工程现场安全文明施工措施费计价管理办法
- 病区药品规范化管理与问题对策黄池桃
- 螺纹塞规操作规程
- 2023年北京天文馆招聘笔试备考题库及答案解析
- 应急救援队伍单兵体能训练项目要求
- 车辆办理ETC委托书范文
- 成都市重污染天气应急预案(2020年修订)
评论
0/150
提交评论