用c++代码在Windows桌面应用程序中绘制简单图形: 按如下所示绘制直线、矩形、圆形等。用不同的颜色和画笔填充圆圈、椭圆等。
时间: 2024-02-25 22:56:09 浏览: 173
c++绘图工具用于画直线,圆,填充
可以使用Windows API中的GDI(图形设备接口)来在Windows桌面应用程序中绘制简单图形。以下是一个示例程序,可以在Windows窗口中绘制直线、矩形和圆形,并使用不同的画笔和填充颜色。你可以根据需要修改和扩展这个代码示例。
```c++
#include <windows.h>
// 窗口消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
// 程序入口函数
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 = "MyWindowClass";
RegisterClass(&wc);
// 创建窗口
HWND hWnd = CreateWindow("MyWindowClass", "My Window", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 640, 480,
NULL, NULL, hInstance, NULL);
// 显示窗口
ShowWindow(hWnd, nCmdShow);
// 消息循环
MSG msg = { 0 };
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
// 窗口消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
// 设备上下文句柄
HDC hdc;
// 画笔句柄
HPEN hPen;
// 填充画刷句柄
HBRUSH hBrush;
// 矩形结构体
RECT rect;
// 圆形结构体
POINT center;
int radius;
switch (message)
{
case WM_PAINT:
{
hdc = BeginPaint(hWnd, NULL);
// 绘制直线
hPen = CreatePen(PS_SOLID, 3, RGB(255, 0, 0));
SelectObject(hdc, hPen);
MoveToEx(hdc, 100, 100, NULL);
LineTo(hdc, 200, 200);
DeleteObject(hPen);
// 绘制矩形
hPen = CreatePen(PS_DOT, 1, RGB(0, 0, 255));
SelectObject(hdc, hPen);
SetRect(&rect, 300, 100, 400, 200);
Rectangle(hdc, rect.left, rect.top, rect.right, rect.bottom);
DeleteObject(hPen);
// 填充圆形
center.x = 500;
center.y = 150;
radius = 50;
hBrush = CreateSolidBrush(RGB(0, 255, 0));
SelectObject(hdc, hBrush);
Ellipse(hdc, center.x - radius, center.y - radius, center.x + radius, center.y + radius);
DeleteObject(hBrush);
EndPaint(hWnd, NULL);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
```
阅读全文