在main函数中怎么画
时间: 2023-12-03 17:46:07 浏览: 78
在main函数中可以使用各种图形库来绘制图形,具体使用哪个库取决于你想要实现的效果、编程语言和操作系统。下面以C++语言为例,介绍两种常用的图形库。
1. 使用Windows API绘图
在Windows系统下,可以使用Windows API来进行绘图。首先需要包含Windows.h头文件,然后在窗口(例如Win32窗口)中使用GDI(Graphics Device Interface)函数来进行绘图。例如,下面的代码可以在窗口中画一个黑色的矩形:
```
#include <Windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS wc;
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
wc.lpszClassName = "MyWindowClass";
if (!RegisterClass(&wc))
return 0;
hWnd = CreateWindow("MyWindowClass", "My Window", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL);
if (!hWnd)
return 0;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
RECT rect;
switch (uMsg)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rect);
FillRect(hdc, &rect, (HBRUSH)(COLOR_WINDOW + 1));
SelectObject(hdc, GetStockObject(BLACK_BRUSH));
Rectangle(hdc, 100, 100, 200, 200);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return 0;
}
```
2. 使用图形库绘图
除了使用Windows API来进行绘图外,还可以使用一些图形库来进行绘图,例如OpenGL、DirectX、Qt等。这里以Qt为例,介绍如何在main函数中使用Qt绘制一个黑色的矩形。
首先需要包含Qt的头文件,并创建一个QApplication对象和一个QWidget对象。然后使用QWidget对象的绘图函数来进行绘图,例如下面的代码可以在QWidget对象中画一个黑色的矩形:
```
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>
#include <QtGui/QPainter>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget widget;
widget.resize(640, 480);
widget.show();
QPainter painter(&widget);
painter.fillRect(100, 100, 100, 100, Qt::black);
return app.exec();
}
```
以上是两种常用的在main函数中绘图的方法,具体使用哪种方法取决于你的需求和编程环境。
阅读全文