c++ GDI+如何调用rc资源png图片
时间: 2023-12-28 18:04:22 浏览: 195
使用GDI+显示PNG图片
4星 · 用户满意度95%
在C++中使用GDI+调用.rc资源的PNG图片与调用位图图片类似。你可以按照以下步骤进行操作:
1. 确保你已经在项目中添加了资源文件(.rc)并包含了所需的PNG图片资源。你可以在Visual Studio的资源视图中进行添加和管理。
2. 在代码中包含以下头文件:
```cpp
#include <gdiplus.h>
#pragma comment(lib, "gdiplus.lib")
```
3. 在你的C++代码中初始化GDI+库。在程序的入口函数中添加以下代码:
```cpp
ULONG_PTR gdiplusToken;
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
```
4. 使用GDI+的Image类来加载.rc资源的PNG图片:
```cpp
HINSTANCE hInstance = GetModuleHandle(NULL);
HRSRC hResource = FindResource(hInstance, MAKEINTRESOURCE(IDB_MYIMAGE), L"PNG");
HGLOBAL hGlobal = LoadResource(hInstance, hResource);
DWORD imageSize = SizeofResource(hInstance, hResource);
LPVOID imageResourceData = LockResource(hGlobal);
Gdiplus::Bitmap bitmap((BYTE*)imageResourceData, imageSize);
```
这里,hInstance是你的应用程序实例句柄,IDB_MYIMAGE是你在资源文件中定义的PNG图片资源的ID。
5. 绘制这个位图到GDI+设备上下文中,例如窗口的绘制函数中:
```cpp
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
Gdiplus::Graphics graphics(hdc);
graphics.DrawImage(&bitmap, 0, 0); // 在原点绘制位图
EndPaint(hWnd, &ps);
```
这里,hWnd是窗口句柄。
6. 在程序结束前,记得释放GDI+库资源:
```cpp
Gdiplus::GdiplusShutdown(gdiplusToken);
```
通过这些步骤,你就可以在C++中使用GDI+调用.rc资源的PNG图片了。希望对你有帮助!如果你有其他问题,请随时提问。
阅读全文