用visual C++绘制圆代码
时间: 2024-05-06 22:20:46 浏览: 16
以下是使用Visual C++绘制圆的示例代码:
```cpp
#include <Windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX windowClass = { 0 };
windowClass.cbSize = sizeof(WNDCLASSEX);
windowClass.style = CS_HREDRAW | CS_VREDRAW;
windowClass.lpfnWndProc = WindowProc;
windowClass.hInstance = hInstance;
windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
windowClass.hbrBackground = (HBRUSH)COLOR_WINDOW;
windowClass.lpszClassName = L"WindowClass";
if (!RegisterClassEx(&windowClass))
{
return 0;
}
RECT rect = { 0, 0, 400, 400 };
AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, FALSE);
HWND hwnd = CreateWindowEx(0, L"WindowClass", L"Circle Drawing", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, rect.right - rect.left, rect.bottom - rect.top,
NULL, NULL, hInstance, NULL);
if (!hwnd)
{
return 0;
}
ShowWindow(hwnd, nCmdShow);
MSG msg = { 0 };
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// Set the circle color to red
HPEN hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
HGDIOBJ oldPen = SelectObject(hdc, hPen);
// Draw the circle
Ellipse(hdc, 50, 50, 350, 350);
// Cleanup
SelectObject(hdc, oldPen);
DeleteObject(hPen);
EndPaint(hwnd, &ps);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
```
这段代码创建了一个窗口并在窗口客户区绘制了一个红色的圆形。绘制圆形使用了Windows API函数`Ellipse()`,该函数可以绘制一个矩形内的圆形。我们通过设置矩形的左上角和右下角坐标来确定圆的位置和大小。在本例中,圆的左上角坐标为(50, 50),右下角坐标为(350, 350)。
请注意,该代码仅适用于Windows平台。如果要在其他平台上绘制圆形,需要使用不同的绘图API和库。