一下是png转换成bitmap图和相应的掩码图:
ibitmap=new (ELeave) CFbsBitmap();//得到的bitmap图
ibmpmask=new (ELeave) CFbsBitmap();//得到的掩码图
_LIT8(MimeType, "image/png");//转换的格式
//图片解析类CImageDecoder
CImageDecoder* imageDecoder = CImageDecoder::FileNewL(afs,aFileName,MimeType,CImageDecoder::EOptionAlwaysThread );
//afs是文件服务器 记得 要事先连接上 如: RFs fs; fs.Connect();
CleanupStack::PushL(imageDecoder);
TFrameInfo frameinfo = imageDecoder->FrameInfo();
//asize --- 图片的大小
TInt er = ibitmap->Create( asize,frameinfo.iFrameDisplayMode );
TInt err = ibmpmask->Create(asize,EGray256);
User::LeaveIfError(er);
User::LeaveIfError(err);
TRequestStatus status;
if (KErrNone == err)
{
//得到掩码图和解析的位图
imageDecoder->Convert( &status, *ibitmap, *ibmpmask );
User::WaitForRequest( status );
}
CleanupStack::PopAndDestroy(imageDecoder);
//最后得到的 ibitmap和ibmpmask就是aFileName路径下图的位图和掩码图。
2nd中绘制的方法是 调用 下面函数
BitBltMasked(TPoint(),ibitmap,TRect(0,0,图片实际宽度,图片实际高度),ibmpmask