- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果 异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作 * serviceRepaint是锁住当前线程,用另外的线程执行paint,直到返回再解锁,效率慢而且可能会死锁。 * ,因此需要所有重绘事件都完成后再做的事情就可以放到run()方法中,并在那些重绘事件的最后面调用Display.callSerially(r)。比如画2帧动画,第二帧要在第一帧确实在手机上画完再执行,那么第二帧的代码可以放到调用r内部的run()方法中。 一个经典的应用程序将建立一帧序列显示出来然后调用repaint()方法。然后应用程序必须等待直到帧实际被显示,在些之后将会出现下一帧的建立。对run()方法的调用通知应用程序前一帧已经完成绘制。 * Canvas本身有两种状态,一种是普通默认情况下,一种是全屏状态,可以用setFullScreenMode()方法对其设定。 * 对于某些突发事件,比如说来电等,屏幕会被系统画面所覆盖的时候,就会调用hideNotify()这个方法,当回复原状时,就会调用我们原来的画面,那么系统就会同时调用showNotify()这个方法。在实际操作过程中,应该覆盖这两个方法,以便在可见性变化时,使程序作出相应的反应,Canvas会在它被显示的时候自动调用paint()方法,所以我们不必调用repaint()方法。 * * * 低级用户界面中图形的绘制都要依靠Graphics类来完成,该类提供了简单的几何绘图功能,与J2SE中的java.awt.Graphics类功能非常相似。 Java ME中图像分为两种: 不变图像:可被存储于持久存储器,网络或者内存中,一旦生成就不能更改。 可变图像:只能存在于内存中,并且可对可变图像进行修改。 * * 这两种方法得到的Graphics对象有区别。第一种可以在屏幕上绘制图像,而利用getGraphics()方法得到Graphics对象主要用于绘制后台缓冲。 Graphics类绘画手机中的原点并不是位于屏幕的最上端,由于手机屏幕包括了多个区域,如标题区域,内容区域和按钮区域等。实际原点位于内容区域的左上角。 * 如图所示,“字符串”这3个字符占用了屏幕的一定的矩形空间。 * 在画出字符串时,除了可以给画笔设置颜色之外,还可以给画笔设置字体。--Font类 * public static Font getDefaultFont():获取系统缺省的Font对象 * * * 由于手机设备存储空间以及计算能力都有限,所以目前只支持载入少数格式的图片,如:png,jpg等。 * * * * 即课本173页 * 可变的Image对象以给定的大小创建,它是可以修改的,可变的Image由Image.createImage(int width,int height)方法创建,需要给定长度,Image的其他显示特性和机器的显示屏完全一致。 * * 什么是锚点? 就是你指定的那个坐标究竟是图像的那个点。 比如,g.drawImage(img,10,20,Graphics.LEFT|Graphics.TOP); 就是在10,20这个地方画一个图片。但是,如果没有锚点,10,20这个坐标究竟是对于图片的那个部位来说的呢? 如果有了Graphics.LEFT|Graphics.TOP,就表示,图片的左上角就会被画在10,20这个坐标。 同理,如果锚点是Graphics.HCENTER|Graphics.VCENTER,则表示图片的正中点就会被画在10,20这个坐标。如果图片的长是8,宽是12,那么,图片的左上角就会被画在6,14这个点上。 锚点就好像一颗钉子,钉在图片的某个点上。 在模拟器上跑得很好的程序在实际的手机上却很慢,甚至运行不了,大多数是因为重画机制的使用不当所 致,J2ME中的 paint()函数起到了画屏幕的作用,往往在需要动画的情况下非常频繁地需要调用,而且在一些低端手机或移动设备上面,对于paint()函数的频繁调 用会引起相应时间长甚至无法正常工作等问题。 实现双缓存可以使用Image 类的可变图像技术。如,利用:image = Image.createImage( width, height ); Graphics g = image.getGraphics(); 来 建立一个可变图像,它和Canvas一样都能够得到Graphics绘图对象的绘制。而且可以不在paint()函数里面,这一点非常重要。可以在 init()中放入绘图语句,或者放到一个单独的函数中,把图片绘制到屏幕外缓冲当中,然后在paint()函数中仅仅是把这个Image绘制到当前的 Canv
文档评论(0)