MBM文件
多位图文件:Multi-Bitmap File
一个MBM文件可以包含多张位图
三种类型:
ROM图像类型
压缩的ROM图像类型
文件库类型(缺省)
生成方式:
命令行:bmconv
在mmp文件中定义
装载函数
TInt Load(const TDesC& aFileName,TInt32 aId=0,TBool aShareIfLoaded=ETrue);
步骤:
1、将位图文件名存储到缓冲区
2、创建位图对象CFbsBitmap
3、使用CFbsBitmap::Load()函数装载
实例:
_LIT(KMBMFileName,"z://systema//apps//testapp//testapp.mbm");
//创建CFbsBitmap
CFbsBitmap *bitmap = new(ELeave) CFbsBitmap();
CleanupStack::PushL(bitmap);
User::LeaveIfError(bitmap->Load(KMBMFileName,EMbmTestAppSmiley));
CleanupStack::PopAndDestroy();
--------------------------------------
位图的绘制
对整个位图的绘制
virtual void BitBlt(cosnt TPoint& apoint,const CFbsBitmap *aBitmap);
指定矩形的绘制
void BitBlt();
--------------------------------------------
使用蒙板的位图绘制
virtual void BitBltMasked(cosnt TPoint& apoint,const CFbsBitmap *aBitmap,const
TRect& aSourceRect,const CFbsBitmap *aMaskBitmap,TBool aInvertMask);
蒙板式一副黑白图像。
正面蒙板:
aInvertMask = EFalse
如果覆盖某像素的蒙板是白色的,则被覆盖的被绘制
反面蒙板
aInvertMask = ETrue
如果覆盖某像素的蒙板是黑色的,则被覆盖的被绘制
实例:
TRect bmpRect();
gc.BitBltMasked()
DrawBitmap()函数用来对位图按照指定的尺寸进行绘制
三种重载
------------------------------------------------
改变位图的色深
symbianOS中显示模式仅只色深
在载入位图时候,转换为合适的色深
位图的变换:
位图旋转类:CbitmapRotator
位图缩放类:CBitmapScaler
异步操作
TRequestStatus
-------------------------
CBitmapScaler:
void Scaler()
CBitmapRotator
void Rotate();
------------------------------
Enum TRotationAngle
{
//旋转的角度
}
访问位图数据
1、直接访问
CFbsBitmap::DataAddress()
CFbsBitmap::LockHeap(),UnlockHeap()
2、间接访问
CFbsBitmap
GetPixel();
TBitmapUtil
Provides fast read/write access to the image data of a bitmap.
-----------------------------------------
制作mbm文件
1、在命令行中切换到bmp文件所在文件夹目录
2、输入命令
bmconv /hDrawerBit.h /Drawmbm.mbm /c8image1.bmp /c24image2.bmp
3、成功后进入到文件夹,修改.h文件为.mbg
4、制作成功
-------------------------------------------