c++ gdi+ 根据 资源id 创建 png图片 对象
时间: 2024-03-11 09:50:45 浏览: 85
在 C++ 中,可以使用 GDI+ 库来加载和处理图像。要根据资源 ID 创建 PNG 图像对象,可以使用以下代码:
```c++
#include <Gdiplus.h>
#pragma comment(lib,"gdiplus.lib")
// 加载资源文件
HMODULE hModule = GetModuleHandle(NULL);
HRSRC hRes = FindResource(hModule, MAKEINTRESOURCE(IDB_PNG1), L"PNG");
DWORD size = SizeofResource(hModule, hRes);
HGLOBAL resData = LoadResource(hModule, hRes);
LPVOID resPtr = LockResource(resData);
// 使用 GDI+ 创建图像对象
Gdiplus::Bitmap* bmp = NULL;
IStream* istream = NULL;
CreateStreamOnHGlobal(NULL, TRUE, &istream);
istream->Write(resPtr, size, NULL);
delete[] resPtr;
Gdiplus::Status status = Gdiplus::Bitmap::FromStream(istream, &bmp);
// 释放资源
istream->Release();
FreeResource(resData);
// 检查是否成功创建图片对象
if (status != Gdiplus::Ok || bmp == NULL) {
return NULL;
}
// 在这里可以使用 bmp 对象进行绘制等操作
// 释放图片对象
delete bmp;
```
这里,我们首先使用 `FindResource` 和 `LoadResource` 函数加载了一个资源文件,这里的 `IDB_PNG1` 是资源文件的 ID,`L"PNG"` 是资源文件类型。然后,我们使用 `CreateStreamOnHGlobal` 函数创建了一个内存流,并将资源文件的数据写入内存流中。接着,使用 `Gdiplus::Bitmap::FromStream` 函数从内存流中加载图像对象。最后,检查是否成功创建了图像对象,如果成功,就可以使用 `bmp` 对象进行绘制等操作。最后,需要释放资源。
希望这可以帮助到你。如果你有任何问题,请随时提问。
阅读全文