#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
TCHAR lpszClassName[] = "My_Drawing";
TCHAR lpszTitle[] = "My_Drawing";
wndclass.style = 0;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = lpszClassName;
if (!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
}
hwnd = CreateWindow(lpszClassName, lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
while (GetMessage(&Msg, NULL, 0, 0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
HPEN hP; //定义画笔句柄
HBRUSH hB; //定义画刷句柄
HBRUSH hR;
HPEN hC;
HPEN hr;
switch (message)
{
case WM_PAINT: //通过响应WM_PAINT消息完成绘图工作
hdc = BeginPaint(hwnd, &ps); //取得设备环境句柄
SetMapMode(hdc, MM_TEXT); //设置映射模式
hr = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));//绿色画笔
SelectObject(hdc, hr);
Pie(hdc, 500, 500, 300, 300, 400, 400, 450, 450);
hB = CreateSolidBrush(RGB(255, 0, 0)); //蓝色画刷
SelectObject(hdc, hB); //更新画刷为自定义画刷
hC = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));
SelectObject(hdc, hC); //更新画笔为自定义画笔
Pie(hdc, 500, 500, 300, 300, 400, 400, 450, 450);
hC = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
SelectObject(hdc, hC); //更新画笔为自定义画笔
hR = CreateSolidBrush(RGB(255, 0, 0));//红色画刷
SelectObject(hdc, hR);
Rectangle(hdc, 300, 200, 500, 300);//使用当前画笔绘制矩形并填充
hr = CreatePen(PS_SOLID, 1, RGB(0, 255, 0));//绿色画笔
SelectObject(hdc, hr);
hB = CreateSolidBrush(RGB(0, 0, 255)); //蓝色画刷
SelectObject(hdc, hB); //更新画刷为自定义画刷
Ellipse(hdc, 130, 70, 270, 190); //绘制椭圆并填充
EndPaint(hwnd, &ps); //释放设备环境句柄
DeleteObject(hR);
DeleteObject(hB);
DeleteObject(hC); //删除画笔画刷句柄
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
C++可视化编程(二)图形设备接口及绘图实例
于 2023-04-10 22:09:50 首次发布