这几天总忙,字体那一部分,翻译了三天,进度实在有点慢.今天大概没啥事情了,暂时决定去杭州了,感觉那面还不错,经理很和蔼,他们的技术也正是我想要的.
在Symbian系统中,首选的使用Bitmap的方法是创建一个MBM(Multi-Bitmap file),在程序运行的时候从MBM中载入.一个MBM可以是一个文件存储器,或者只读镜像(ROM image)类型.文件存储器类型的MBM会被压缩,在程序运行的时候需要解压缩,消耗资源,只读镜像类型的MBM不被压缩,直接调用,节省资源.默认的MBM是文件存储器类型.
MBM可以从Windows的Bitmap中创建,使用bmconv工具进行转换.MBM可以直接被命令行所使用,或在mmp文件中定义.在编译的时候,他会被拷贝到相应的目标文件夹下.示例代码:
通常在一些情况下会用到遮挡.遮挡其实就是以遮挡的方法,来显示黑色和白色的图片.默认设置黑色部分是显示部分,白色是遮挡部分.有一些方法也可以实现反相遮挡.遮挡和普通的显示图片其实是一样的,也需要载入.遮挡示例代码:
遮挡对于游戏来说是非常有用的,你可以通过遮挡在背景上显示一些不规则的图形或图像.
在图像显示过程中,有时候要同时显示出几张图像来,这样会是一个很消耗系统资源的事情.这就会导致系统在显示图像的情况下比较缓慢,而且图像也是从不完整或者不准确到准确这样的一个显示过程.虽然最后的显示结果是准确的,但是,我们通常使用另外一种方法来避免这种情况.我们通常来建立一个容器类来控制图片的显示,转化和储存.
图片的转化可以使用一个临时的Bitmap来实现,示例代码如下:
上面的例子通过参数来获得文件名和Bitmap的ID,从MBM文件中载入相应的Bitmap.转化Bitmap为windows的显示模式,使用新的Bitmap来显示.
Bitmap可以旋转和块状化,这也是很有用处的.CMdaBitmapRotator来实现旋转一定的角度,CMdaBitmapScaler来实现块状化.S60平台2.0以前的版本不支持这两种方法,他使用了这两种CbitmapRotator
和CbitmapScaler,实现的功能是一样的.
实际上这两种方法的执行是异步的,通过继承自MMdaImageUtilObserver一个类来通知操作完成.如果你觉得对于Bitmap的操作方法太少,你也可以使用或者定义其他新的.If speed is a critical factor, you can access the bitmap data directly with a pointer and modify it as needed.
你可以使用CFbsBitmap:dataAddress来直接存取Bitmap数据区域的头指针(最左上角第一个点).有一点要注意,在程序运行的时候,这个点可能会被移动.所以,在对其使用TBitmapUtil进行存取的时候,要进行锁定.在S60平台2.0里,我们使用CFbsBitmap的LockHeap和UnlockHeap的方法.
在对Bitmap数据直接访问的时候,你需要知道他们的格式,比如,16比特的Bitmap是5-6-5格式,而12比特的Bitmap是4-4-4的格式.下面示例代码演示了给所有象素加上一个红色部分:
最后,Hardware Acceleration里面给我们提供了很多好东东.
在Symbian系统中,首选的使用Bitmap的方法是创建一个MBM(Multi-Bitmap file),在程序运行的时候从MBM中载入.一个MBM可以是一个文件存储器,或者只读镜像(ROM image)类型.文件存储器类型的MBM会被压缩,在程序运行的时候需要解压缩,消耗资源,只读镜像类型的MBM不被压缩,直接调用,节省资源.默认的MBM是文件存储器类型.
MBM可以从Windows的Bitmap中创建,使用bmconv工具进行转换.MBM可以直接被命令行所使用,或在mmp文件中定义.在编译的时候,他会被拷贝到相应的目标文件夹下.示例代码:
|
|
通常在一些情况下会用到遮挡.遮挡其实就是以遮挡的方法,来显示黑色和白色的图片.默认设置黑色部分是显示部分,白色是遮挡部分.有一些方法也可以实现反相遮挡.遮挡和普通的显示图片其实是一样的,也需要载入.遮挡示例代码:
|
遮挡对于游戏来说是非常有用的,你可以通过遮挡在背景上显示一些不规则的图形或图像.
在图像显示过程中,有时候要同时显示出几张图像来,这样会是一个很消耗系统资源的事情.这就会导致系统在显示图像的情况下比较缓慢,而且图像也是从不完整或者不准确到准确这样的一个显示过程.虽然最后的显示结果是准确的,但是,我们通常使用另外一种方法来避免这种情况.我们通常来建立一个容器类来控制图片的显示,转化和储存.
图片的转化可以使用一个临时的Bitmap来实现,示例代码如下:
|
上面的例子通过参数来获得文件名和Bitmap的ID,从MBM文件中载入相应的Bitmap.转化Bitmap为windows的显示模式,使用新的Bitmap来显示.
Bitmap可以旋转和块状化,这也是很有用处的.CMdaBitmapRotator来实现旋转一定的角度,CMdaBitmapScaler来实现块状化.S60平台2.0以前的版本不支持这两种方法,他使用了这两种CbitmapRotator
和CbitmapScaler,实现的功能是一样的.
实际上这两种方法的执行是异步的,通过继承自MMdaImageUtilObserver一个类来通知操作完成.如果你觉得对于Bitmap的操作方法太少,你也可以使用或者定义其他新的.If speed is a critical factor, you can access the bitmap data directly with a pointer and modify it as needed.
你可以使用CFbsBitmap:dataAddress来直接存取Bitmap数据区域的头指针(最左上角第一个点).有一点要注意,在程序运行的时候,这个点可能会被移动.所以,在对其使用TBitmapUtil进行存取的时候,要进行锁定.在S60平台2.0里,我们使用CFbsBitmap的LockHeap和UnlockHeap的方法.
在对Bitmap数据直接访问的时候,你需要知道他们的格式,比如,16比特的Bitmap是5-6-5格式,而12比特的Bitmap是4-4-4的格式.下面示例代码演示了给所有象素加上一个红色部分:
|
最后,Hardware Acceleration里面给我们提供了很多好东东.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126362/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10294527/viewspace-126362/
本文详细介绍了在Symbian系统中如何使用MBM(Multi-Bitmapfile)文件来管理和加载Bitmap图像资源,包括MBM文件的类型、创建方法、在程序中的使用以及示例代码。此外,还讲解了Bitmap的显示、遮挡、转换和直接数据访问等高级技巧。
;
raw( const TRect& /*aRect*/
184

被折叠的 条评论
为什么被折叠?



