GDI+ Image通过资源ID构建对象

刺骨的言语ヽ痛彻心扉 2022-08-08 15:49 237阅读 0赞

BOOL CSmalltmpdemoDlg::ImageFromIDResource(UINT nID, LPCTSTR sTR, Image * & pImg) { HINSTANCE hInst = AfxGetResourceHandle(); HRSRC hRsrc = ::FindResource (hInst,MAKEINTRESOURCE(nID),sTR); // type if (!hRsrc) return FALSE; // load resource into memory DWORD len = SizeofResource(hInst, hRsrc); BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc); if (!lpRsrc) return FALSE; // Allocate global memory on which to create stream HGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, len); BYTE* pmem = (BYTE*)GlobalLock(m_hMem); memcpy(pmem,lpRsrc,len); IStream* pstm; CreateStreamOnHGlobal(m_hMem,FALSE,&pstm); // load from stream pImg=Gdiplus::Image::FromStream(pstm); // free/release stuff GlobalUnlock(m_hMem); pstm->Release(); FreeResource(lpRsrc); return TRUE; }

调用方式:

Image * pImage = NULL;

ImageFromIDResource(IDR_PNG_NO_PIC, L”png”, pImage);

delete pImage;

/

Image * pImage = NULL;

ImageFromIDResource(IDR_PNG_NO_PIC, L”jpg”, pImage);

delete pImage;

//

Image * pImage = NULL;

ImageFromIDResource(IDR_PNG_NO_PIC, L”bitmap”, pImage);

delete pImage;

//

其中的 L”png”, L”jpg”, L”bitmap”为导入到vc资源的类别,并且不区分大小写。

eg.PNG

发表评论

表情:
评论列表 (有 0 条评论,237人围观)

还没有评论,来说两句吧...

相关阅读

    相关 GDI+ Vs GDI

    一、GDI   GDI是位于应用程序与不同硬件之间的中间层,这种结构让程序员从直接处理不同硬件的工作中解放出来,把硬件间的差异交给了GDI处理。GDI通过将应用程序与不同输

    相关 GDI对象泄漏的问题

    项目中遇到的一个问题:GUI程序长时间运行时(大于27小时),会出现点击托盘图标无反应,不能正常显示界面 调查分析:调试代码,待问题复现后(超过一段时间)几乎必现。在工程的输

    相关 GDI GDI+ 的区别

    GDI+是GDI的下一个版本,它进行了很好的改进,并且易用性更好。GDI的一个好处就是你不必知道任何关于数据怎样在设备上渲染的细节,GDI+更好的实现了这个优点,也就是说,GD