在S60加载Bitmap和Mask的效率

来源:互联网 发布:数据库中的sequence 编辑:程序博客网 时间:2024/06/05 18:38

在S60加载Bitmap和Mask的效率

From Forum Nokia Wiki

_LIT(KYourMifFile, “resource//apps//yourmif.mif”);

//yourmif.mif contains svgs

include <yourmif.mbg>  in  .cpp file

// In header file

CFbsBitmap* iFocusBitmap;
CFbsBitmap* iBitmapMask;

// anywhere in .cpp file

if(iFocusBitmap == NULL)
{
// load the image and mask
AknIconUtils::CreateIconL( iFocusBitmap,
iBitmapMask,
KYourMifFile,
EMbmYourMif_focus,
EMbmYourMif_mask );
}
TSize size(Rect().Width()*10/100,Rect().Height()*10/100);
AknIconUtils::SetSize(iFocusBitmap,size,EAspectRatioNotPreserved);
AknIconUtils::SetSize(iBitmapMask,size,EAspectRatioNotPreserved );

// In the destructor

delete  iFocusBitmap;
delete iBitmapMask;

AknIconUtils::SetSize初始化给定尺寸的图标,参数aBitmap是CAknBitmap的示例,如AknIconUtils方式生成。如果不是CAknBitmap,这个方法无效。注意这里调用设置的是bitmap和mask(如果它存在的话),如果不调用SetSize方法,那么位图将无法被绘制到屏幕上。

尽管CreateIconL有重载方法只加载单个图片,但上述方法在加载和修改尺寸方面更有效率。

Retrieved from "http://wiki.forum.nokia.com/index.php/%E5%9C%A8S60%E5%8A%A0%E8%BD%BDBitmap%E5%92%8CMask%E7%9A%84%E6%95%88%E7%8E%87"
原创粉丝点击