日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

win32绘图:绘制直线 矩形 圆形 曲线等

發(fā)布時間:2025/3/8 编程问答 29 如意码农
生活随笔 收集整理的這篇文章主要介紹了 win32绘图:绘制直线 矩形 圆形 曲线等 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
查看代碼


#include <Windows.h>
//畫點(diǎn)
void PaintSetPixel(HDC hdc) {
for (short i = 0; i < 20; i++)
{
SetPixel(hdc, 30, 30 + i, RGB(0, 0, 255));
} }
//畫線
void PaintLine(HDC hdc) {
//從坐標(biāo)(50,50)畫到坐標(biāo)(200,50)
MoveToEx(hdc, 50, 50, NULL);
LineTo(hdc, 200, 50);
}
//畫一個矩形
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);
}
//畫圓 橢圓
void PaintEllipse(HDC hdc) {
//圓形左上角坐標(biāo)(50,50) 右下角坐標(biāo)(100,100)
Ellipse(hdc, 50, 50, 100, 300);
}
//畫弧線
void PaintArc(HDC hdc) {
Arc(hdc, 100, 100, 400, 400, 150, 50, 50, 150);
}
//畫扇形
void PaintPie(HDC hdc) {
Pie(hdc, 100, 100, 400, 400, 300, 50, 50, 300);
}
//自定義過程函數(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) {
//聲明窗口類
WNDCLASS wndClass;
//CS_NOCLOSE 禁止系統(tǒng)菜單的關(guān)閉選項(xiàng)
wndClass.style = CS_HREDRAW | CS_VREDRAW;//窗口類樣式
wndClass.lpfnWndProc = MyWndProc;//窗口過程函數(shù)
wndClass.cbClsExtra = 0;//窗口類無擴(kuò)展
wndClass.cbWndExtra = 0;//窗口實(shí)例無擴(kuò)展
wndClass.hInstance = hInstance;//窗口類所屬應(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;//窗口無菜單
wndClass.lpszClassName = L"caoruipeng";//窗口類名稱
//注冊窗口類
if (!RegisterClass(&wndClass)) {
MessageBox(NULL, L"無效的窗口類", L"錯誤提示", MB_OK);
return FALSE;
} //創(chuàng)建窗口
HWND hwnd = CreateWindow(L"caoruipeng",//窗口類名稱 注冊窗口類的名稱
L"第一個窗口程序",//窗口標(biāo)題
WS_OVERLAPPEDWINDOW,//窗口樣式
CW_USEDEFAULT,//窗口位置x坐標(biāo)
CW_USEDEFAULT,//窗口位置y坐標(biāo)
CW_USEDEFAULT,//窗口寬度
CW_USEDEFAULT,//窗口高度
NULL,//此時窗口無父窗口
NULL,//此時窗口無子菜單
hInstance,//創(chuàng)建窗口的應(yīng)用程序句柄
NULL
); //展示窗口
ShowWindow(hwnd, nShowCmd); //繪制用戶區(qū)域
UpdateWindow(hwnd); MSG msg;
//如果檢索WM_QUIT消息 返回0,其他返回非0 返回0的時候,會跳出循環(huán),結(jié)束程序
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);//翻譯消息
//將消息分發(fā)給窗口過程函數(shù) 返回窗口過程函數(shù)返回的值 通常忽略該值
DispatchMessage(&msg);
}
return msg.wParam;
}

總結(jié)

以上是生活随笔為你收集整理的win32绘图:绘制直线 矩形 圆形 曲线等的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。