MFC如何在路径中加载png图像

电脑杂谈  发布时间:2020-04-21 14:06:30  来源:网络整理

mfc加载png图片_加载中 png_加载png

全部展开

首先,在Resource.h中定义ID:

示例:

#defineIDB_BG 131

然后7a64e59b9ee7ad9431333337396231在rc文件中添加代码:

IDB_BGRCPNG“ res // background.png”

其中RCPNG是自定义资源类型的名称

然后,您需要ATL类CImage和以下方法:

///////////////////////////////////////////////// // ////////////////////////

///从资源文件加载图片

/// @参数[in] pImage图片指针

mfc加载png图片_加载中 png_加载png

/// @参数[输入] nResID资源编号

/// @参数[输入] lpTyp资源类型

///////////////////////////////////////////////// // ////////////////////////

staticboolLoadImageFromResource(INCImage * pImage,

INUINTnResID加载png,

INLPCSTRlpTyp)

{

如果(pImage == NULL)返回false;

pImage->销毁();

//查找资源

HRSRChRsrc = :: FindResource(AfxGetResourceHandle(),MAKEINTRESOURCE(nResID),​​lpTyp);

mfc加载png图片_加载png_加载中 png

如果(hRsrc == NULL)返回false;

//加载资源

HGLOBALhImgData = :: LoadResource(AfxGetResourceHandle(),hRsrc);

如果(hImgData == NULL)

{

:: FreeResource(hImgData);

returnfalse;

}

//锁定内存中的指定资源

LPVOIDlpVoid = :: LockResource(hImgData);

LPSTREAMpStream = NULL;

加载png_加载中 png_mfc加载png图片

DWORDdwSize = :: SizeofResource(AfxGetResourceHandle(),hRsrc);

HGLOBALhNew = :: GlobalAlloc(GHND加载png,dwSize);

LPBYTElpByte =(LPBYTE):: GlobalLock(hNew);

:: memcpy(lpByte,lpVoid,dwSize);

//删除内存中的指定资源

:: GlobalUnlock(hNew);

//从指定的内存创建流对象

HRESULTht = :: CreateStreamOnHGlobal(hNew,TRUE和pStream);

如果(ht!= S_OK)

{

GlobalFree(hNew);

加载png_加载中 png_mfc加载png图片

}

其他

{

//加载图片

pImage->加载(pStream);

GlobalFree(hNew);

}

//释放资源

:: FreeResource(hImgData);

returntrue;

}

补充: Microsoft基础类(英语: Microsoft Foundation Classes,简称MFC)是Microsoft Corporation提供的类库. 它以C ++类的形式封装Windows API,并包含一个应用程序框架以减少应用程序开发人员的工作量. 包括的类包括大量Windows句柄封装类以及许多Windows内置控件和组件封装类.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-183620-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...