用户: 密码: 答案:   我要注册   忘记密码

加入收藏  设为首页

开发文档

CNJM首页

业界新闻

手机软件

终端应用

资源下载

EclipseME

CNJM论坛

                 

频道列表

J2ME开发 176篇
服务器端开发 33篇
JAVA语言 70篇
游戏与图形 101篇
WindowsMobile开发 6篇
Symbian开发 61篇
Brew开发 36篇
其它开发平台 6篇

热点文章

向大家推荐几个比...  15420次
[推荐]symbian入门... 9747次
制作sis文件全攻略 8663次
Symbian Series60...  7650次
写给symbian os开...  7460次
[转帖]Symbian OS ... 7303次
Series 60图形开发... 7196次
在.pkg中定义条件...  6992次
连载:Series 60应...  6761次
请问有大虾知道如...  6752次
在Symbian OS中读...  6467次
蔡鸟的一些学习笔...  6008次

文章搜索

搜 索
按 照
频 道
  
Series 60图形开发范例 for symbian os
编辑:jjLuckystar    审核:rocks    文章来源:CNJM论坛精华
关键词:symbian, 图形开发    发表日期:2004-01-16 11:01:55    浏览次数:7197次
本文版权归原作者,中国JAVA手机网收录本文的目的是让更多人阅读到此文章。转载请注明出处为中国JAVA手机网<www.cnjm.net>

[本文章最后由 rocks 在2006-02-09 11:36:10编辑过]

来自:http://www.cnjm.net/tech/article717.html

声明:此文不是标准的翻译,需要更确切的意思请参照原文档。
Graphics example
1 关于本例子(Abou this example)
本例子演示了两个画位图到屏幕的函数。通常,任何位图都可以使用窗口服务
(Window Server)直接拷贝位图显示到屏幕。这些操作使用任何应用程序都
JAVA手机网[www.cnjm.net]
能访问到的CWindowGC 类。该类拥有很多操作位图的有效的函数,诸如BitBlt()
和BitBltMasked()。
使用窗口服务直接操作位图这个方法会出现如下问题:
--一些位图的建立(加载)需要很长一段时间。显示图像可能不整齐,对用户造成混乱。
--如果很多正在移动的对象画到屏幕,屏幕会闪烁。在所有的对象都画到屏幕之前,
  窗口服务变得泛滥就会发生闪烁。(get flushed 不知道怎么解释)
要解决这些问题,可以使用“off-screen bitmap”(离屏位图),这个位图和真实的显示
屏幕尺寸相同。替代使用窗口服务直接画图到屏幕的方法,他们(图像)被画到离屏
位图。一旦所有图像画完,窗口服务拷贝已经被修改过的离屏位图到屏幕。因此,所
有的图像都被一次性操作写到屏幕,因此也完全消除闪烁。本例子演示使用了这两种
JAVA手机网[www.cnjm.net]
方法实现了几个精灵的动画。
下面部分解释了在画图中,颜色深度和掩模的重要性。
1.1 颜色深度(Colour Depth)
颜色深度参考为每一个像素存储颜色信息的位数。当需要快速的显示图片效果
的时候,对一张图片使用正确的颜色深度是非常重要的。如果图片使用的颜色深度
和显示屏幕的颜色深度不同,图像在画之前必须转换成和显示屏幕一样的颜色深度。
这个转换降低了画图处理过程速度。图片通常以压缩格式存储在MBM文件中。MBM
文件使用Symbian OS 中bmconv工具生成。当运行这个工具压缩位图的时候,需要
为每一张位图指定颜色深度。通常应该把颜色深度设置成12bit色,这个和显示屏幕
的颜色深度相同;因此,当显示图片的时候,不需要转换。
1.2 淡化(Masking)
淡化通常被使用于选择要画位图的某部分,通过使用窗口服务BitBltMasked函数。如
果掩模中的像素是黑色,相应的像素就从位图中拷贝;如果掩模中的像素是白色,那
么相应的像素就不从位图拷贝。这种方法用来显示像素所在的背景是非常有效率的。
本例子使用掩模画圆到屏幕。没有掩模,这个圆将出现在一个白色的巨型区域中,当
图像闪动移过屏幕的时候。注意的是掩模没有被拷贝到屏幕,只是简单的用来判断
哪个像素需要拷贝到屏幕。因此,为了减少内存需求,掩模应该使用2bit的颜色深度
,而不是12bit颜色深度。
2 预先要求(Pre-requisites)
本例子使用标准的Symbian OS应用程序框架,由应用程序类,文档类,用户界面类,
视图类组成。要理解这个例子读者首先应该知道这个架构。
本例子使用了一些其它的Symbian OS概念,读者也应该事先知道。概念如下:
--窗口服务(windows server)
--图形上下文(graphics context)
--位图(bitmaps)
--定时器时钟(Timers)
3 在模拟器上编译运行
JAVA手机网[www.cnjm.net]
本例子程序在D:Symbian6.1Series60Series60Exgraphics
4 设计和实现
JAVA手机网[www.cnjm.net]
本例子逻辑都包含在CGraphicsAppView类中。这个类控制图像在屏幕上的显示。
在接下来的章节中,将要描述以下内容:
--CGraphicsAppView对象的构造
--使用periodic周期性时钟运行periodic周期性事件
--直接画所有图像到屏幕
--间接画一些图像到屏幕
--标准的屏幕重画
本例子页使用了一些“helper functions”辅助功能(函数)。这些函数完成简单的任务,诸如
创建一个位图。因为这些函数对很多应用程序都是很有用的,所以他们被移动到他们自己的
名称空间。任何需要使用它们的程序,都不需要重新实现它们。这些有用的函数在helper
JAVA手机网[www.cnjm.net]
functions 文档都有讨论。
4.1 构造
CGraphicsAppView 类加载所有需要的位图,创建设备和位图需要的设备上下文,包含一个
JAVA手机网[www.cnjm.net]
用来支持动画的时钟和初始化精灵sprite对象(三个滚动的球)。
消息描述
--CGraphicsAppView 实例化
--为每一个位图调用CreateBitmapL,从磁盘加载位图。这些位图文件包括background ,ball ,ball mask
--调用CreateBitmapL创建一个离屏位图。
--调用CreateBitmapDeviceL创建位图图形设备,该设备用来完成在内存中位图的画图。
--调用CreateGraphicsContextL创建位图图形设备上下文,用来把位图画到屏幕。
--调用CPeriodic::NewL 实例化一个时钟对象。这个时钟用来周期性更新屏幕。
--调用SetUpSpritest初始化三个sprite对象
4.2 动画
当用户开启一个动画类型的时候,CGraphicsAppView对象打开CPeriodic时钟。一旦运行,
就周期性的调用Period周期性的函数。这将更新精灵的位置,并且直接更新到屏幕。这种
周期性的中断会持续到用户停止该时钟。动画使用Activate,Deactivate管理它自己的上下文,
而不是使用DrawNow函数。这样做是因为DrawNow函数将重画屏幕事件不能在真实地时间
被预先通知。
JAVA手机网[www.cnjm.net]
4.2.1 屏幕画图
UpdateDisplay函数根据画屏幕类型完成不同的动作。当不使用离屏位图时,所有的位图直接
写到屏幕。如果非常多的图像需要画到屏幕的时候,这将导致闪烁。
4.2.2 使用离屏位图画图
当使用离屏位图时,所有的图像都被画到离屏位图。一旦所有的图像都在离屏位图画好,该位
图被直接拷贝到屏幕。这就避免了闪烁,就算是很多对象在屏幕上画看起来也是非常的平滑。
4.3 标准的重画(Standard re-drawing)
JAVA手机网[www.cnjm.net]
偶尔的,动画屏幕可能被其他的窗口或者对话框覆盖。当这些窗口或者对话框清除的时候,
动画屏幕需要被重画。为了重画请求,框架自动调用Draw函数,该函数需要应用程序视图
实现。在这里,Draw函数仅仅简单使用了标准的和周期性时钟调用相同的UpdateDisplay函数。
5 总结(Summary)
本例子显示了:
--如何使用窗口服务画屏幕
--有效使用离屏位图避免闪烁,并且平滑的更新屏幕。
--如何通过周期性的时钟建立图像
--在应用程序中如何使用多种颜色深度位图
来自:http://www.cnjm.net/tech/article717.html

相关文章
    给Symbian的模拟器换皮肤(换成我们喜欢的手机皮肤)  [2007-07-08]
    编写安全的Symbian C++游戏代码  [2007-07-07]
    Symbian将在中国开设分公司  [2007-01-11]
    Skype首度支持S60手机 微软独占优势不再  [2006-02-23]
    Symbian Series60上实现混音的办法  [2006-02-23]
    2010年微软和Linux智能手机将超越Symbian  [2006-02-23]
    在.pkg中定义条件判断60系列平台的版本  [2006-02-17]
    在Symbian OS中读取ZIP文件  [2006-02-17]
最新评论
网站简介  |  关于版权  |  广告服务  |  网站地图  |  联系我们
Copyright © www.CNJM.net, All rights reserved
中国JAVA手机网 版权所有
ICP备案:京ICP备041452