win32绘图:绘制直线 矩形 圆形 曲线等
生活随笔
收集整理的這篇文章主要介紹了
win32绘图:绘制直线 矩形 圆形 曲线等
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
查看代碼
#include <Windows.h>
//畫(huà)點(diǎn)
void PaintSetPixel(HDC hdc) {
for (short i = 0; i < 20; i++)
{
SetPixel(hdc, 30, 30 + i, RGB(0, 0, 255));
}
}
//畫(huà)線
void PaintLine(HDC hdc) {
//從坐標(biāo)(50,50)畫(huà)到坐標(biāo)(200,50)
MoveToEx(hdc, 50, 50, NULL);
LineTo(hdc, 200, 50);
}
//畫(huà)一個(gè)矩形
void PaintRect(HDC hdc) {
//繪制普通舉矩形:從左上角坐標(biāo)(100,00)到右下角坐標(biāo)(200,200)
//Rectangle(hdc, 100, 100, 200, 200);
//繪制圓角矩形 從左上角坐標(biāo)(100,00)到右下角坐標(biāo)(200,200) (30,30)表示圓角寬度和高度
RoundRect(hdc, 100, 100, 600, 600, 30, 30);
}
//畫(huà)圓 橢圓
void PaintEllipse(HDC hdc) {
//圓形左上角坐標(biāo)(50,50) 右下角坐標(biāo)(100,100)
Ellipse(hdc, 50, 50, 100, 300);
}
//畫(huà)弧線
void PaintArc(HDC hdc) {
Arc(hdc, 100, 100, 400, 400, 150, 50, 50, 150);
}
//畫(huà)扇形
void PaintPie(HDC hdc) {
Pie(hdc, 100, 100, 400, 400, 300, 50, 50, 300);
}
//自定義過(guò)程函數(shù)
//參數(shù) HWND:窗口的句柄 message:消息ID 附加消息信息 附加消息信息
LRESULT CALLBACK MyWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
{
hdc = BeginPaint(hwnd, &ps);
//PaintLine(hdc);
//PaintSetPixel(hdc);
//PaintRect(hdc);
//PaintEllipse(hdc);
//PaintArc(hdc);
PaintPie(hdc);
EndPaint(hwnd, &ps);
break;
}
default:
return DefWindowProcW(hwnd, message, wParam, lParam);
}
return DefWindowProcW(hwnd, message, wParam, lParam);
}
//void OnPaint(HDC hdc) {
// Graphics graphics(hdc);
//}
int WINAPI WinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nShowCmd) {
//聲明窗口類(lèi)
WNDCLASS wndClass;
//CS_NOCLOSE 禁止系統(tǒng)菜單的關(guān)閉選項(xiàng)
wndClass.style = CS_HREDRAW | CS_VREDRAW;//窗口類(lèi)樣式
wndClass.lpfnWndProc = MyWndProc;//窗口過(guò)程函數(shù)
wndClass.cbClsExtra = 0;//窗口類(lèi)無(wú)擴(kuò)展
wndClass.cbWndExtra = 0;//窗口實(shí)例無(wú)擴(kuò)展
wndClass.hInstance = hInstance;//窗口類(lèi)所屬應(yīng)用實(shí)例
wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);//窗口的最小化圖標(biāo)為缺省圖標(biāo)
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);//窗口采用的箭頭光標(biāo)
wndClass.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH));//背景白色
wndClass.lpszMenuName = NULL;//窗口無(wú)菜單
wndClass.lpszClassName = L"caoruipeng";//窗口類(lèi)名稱(chēng)
//注冊(cè)窗口類(lèi)
if (!RegisterClass(&wndClass)) {
MessageBox(NULL, L"無(wú)效的窗口類(lèi)", L"錯(cuò)誤提示", MB_OK);
return FALSE;
}
//創(chuàng)建窗口
HWND hwnd = CreateWindow(L"caoruipeng",//窗口類(lèi)名稱(chēng) 注冊(cè)窗口類(lèi)的名稱(chēng)
L"第一個(gè)窗口程序",//窗口標(biāo)題
WS_OVERLAPPEDWINDOW,//窗口樣式
CW_USEDEFAULT,//窗口位置x坐標(biāo)
CW_USEDEFAULT,//窗口位置y坐標(biāo)
CW_USEDEFAULT,//窗口寬度
CW_USEDEFAULT,//窗口高度
NULL,//此時(shí)窗口無(wú)父窗口
NULL,//此時(shí)窗口無(wú)子菜單
hInstance,//創(chuàng)建窗口的應(yīng)用程序句柄
NULL
);
//展示窗口
ShowWindow(hwnd, nShowCmd);
//繪制用戶(hù)區(qū)域
UpdateWindow(hwnd);
MSG msg;
//如果檢索WM_QUIT消息 返回0,其他返回非0 返回0的時(shí)候,會(huì)跳出循環(huán),結(jié)束程序
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);//翻譯消息
//將消息分發(fā)給窗口過(guò)程函數(shù) 返回窗口過(guò)程函數(shù)返回的值 通常忽略該值
DispatchMessage(&msg);
}
return msg.wParam;
}
總結(jié)
以上是生活随笔為你收集整理的win32绘图:绘制直线 矩形 圆形 曲线等的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微博爬虫实践---搜索关键词
- 下一篇: HTTPS 与 HTTP 的区别在哪?