首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC智能设备应用程序下,怎么加载Png图片

2012-08-13 
MFC智能设备应用程序上,如何加载Png图片请哪为高手帮忙指点一下我要在windows mobile6.0模拟器上运行一个

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

热点排行