MFC智能设备应用程序上,如何加载Png图片
请哪为高手帮忙指点一下
我要在windows mobile6.0模拟器上运行一个程序,需要加载Png图片做按钮及背景,用下面这段函数可以加载,但速度很慢,
有没有别的方法可以在智能设备上加载png图片,并能快速的显示呢?
void LoadImageFromRes(HDC hDC,DWORD ImgID,HINSTANCE inst,RECT&rec)
{
HINSTANCE OldHinstance = AfxGetResourceHandle();
AfxSetResourceHandle(inst);
CoInitializeEx(NULL, COINIT_MULTITHREADED);
IImagingFactory *g_pImgFactory;
IImage *pImage;
SUCCEEDED(CoCreateInstance (CLSID_ImagingFactory, NULL,CLSCTX_INPROC_SERVER, IID_IImagingFactory, (void **)&g_pImgFactory));
HRSRC hr;
hr = FindResource(AfxGetResourceHandle(),MAKEINTRESOURCE(ImgID),_T("PNG"));
HGLOBAL hglobal= LoadResource(AfxGetResourceHandle(), hr );
LPVOID lpVoid = NULL;
lpVoid = LockResource(hglobal);
int nSize = 0;
nSize = (UINT)SizeofResource(AfxGetResourceHandle(), hr);
if(nSize <= 0){return ;}
HRESULT ret1 =g_pImgFactory-> CreateImageFromBuffer((BYTE*)hglobal, nSize, BufferDisposalFlagNone ,&pImage);
RECT rect;
rect.left=rec.left;
rect.top=rec.top;
rect.right=rec.right;
rect.bottom=rec.bottom;
pImage->Draw(hDC, &rect, NULL);
UnlockResource(hglobal);
pImage->Release();
g_pImgFactory->Release();
AfxSetResourceHandle(OldHinstance);
}
[解决办法]
HBITMAP CMouseTestDlg::LoadPngPicture(const TCHAR* szTPngPicName)
{
CImage Image;
Image.Load(szTPngPicName);
if(Image.IsNull())
{
MessageBox(_T("Load Error"));
return NULL;
}
HBITMAP hbitmap = Image.Detach();
return hbitmap;
}
这就把png转换成bitmap了。
[解决办法]
可以去看看:
http://www.yesky.com/201/1921701.shtml