位图绘制

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、制作成功

-------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值