c++使用GDI显示一张图片
时间: 2023-08-03 18:05:08 浏览: 230
在VC++6.0中将JPG格式图片转换成BMP格式
5星 · 资源好评率100%
在C++中使用GDI(Graphics Device Interface)显示一张图片,可以按照以下步骤进行操作:
1. 包含必要的头文件:
```cpp
#include <Windows.h>
```
2. 在窗口过程中添加绘图代码:
```cpp
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// 创建并加载图片
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, L"path_to_image.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
// 获取设备上下文
HDC hdcBitmap = CreateCompatibleDC(hdc);
SelectObject(hdcBitmap, hBitmap);
// 绘制图片
BITMAP bitmap;
GetObject(hBitmap, sizeof(BITMAP), &bitmap);
BitBlt(hdc, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcBitmap, 0, 0, SRCCOPY);
// 清理资源
DeleteObject(hBitmap);
DeleteDC(hdcBitmap);
EndPaint(hwnd, &ps);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
default:
{
return DefWindowProc(hwnd, msg, wParam, lParam);
}
}
return 0;
}
```
3. 创建窗口并运行消息循环:
```cpp
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 注册窗口类
WNDCLASS wc = { 0 };
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = L"ImageWindowClass";
RegisterClass(&wc);
// 创建窗口
HWND hwnd = CreateWindow(L"ImageWindowClass", L"Image Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
800, 600, NULL, NULL, hInstance, NULL);
// 显示窗口
ShowWindow(hwnd, nCmdShow);
// 进入消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
```
注意:
- 将"path_to_image.bmp"替换为你自己的图片路径。
- 以上代码是基于Windows操作系统的。如果你使用其他操作系统,可能需要使用不同的图形库或API来实现类似的功能。
希望这能帮助到你!如果还有其他问题,请继续提问。
阅读全文