通过函数BeginPaint画图
1、创建一个Windows桌面应用程序
2、找到WM_PAINT消息的处理函数,添加代码如下:
1 case WM_PAINT: 2 { 3 PAINTSTRUCT ps; 4 HDC hdc = BeginPaint(hWnd, &ps); 5 TextOut(hdc, 10, 20, L"HelloWorld", 10); //绘制文本 6 Ellipse(hdc, 50, 50, 200, 200); //绘制椭圆 7 EndPaint(hWnd, &ps); 8 } 9 break;
这里主要用到了TextOut和Ellipse函数来进行文本绘制和椭圆绘制。
TextOut函数声明如下:
1 BOOL TextOutW( 2 [in] HDC hdc, 3 [in] int x, 4 [in] int y, 5 [in] LPCWSTR lpString, 6 [in] int c 7 );
参数说明:
[in] hdc
设备上下文的句柄。
[in] x
系统用于对齐字符串的引用点的 x 坐标(以逻辑坐标表示)。
[in] y
系统用于对齐字符串的引用点的 y 坐标(以逻辑坐标表示)。
[in] lpString
指向要绘制的字符串的指针。 字符串不需要以零结尾,因为 cchString 指定字符串的长度。
[in] c
lpString 指向字符串的长度(以字符为单位)。
返回值:
成功,返回非0,失败,返回0
Ellipse函数声明如下:
1 BOOL Ellipse( 2 [in] HDC hdc, 3 [in] int left, 4 [in] int top, 5 [in] int right, 6 [in] int bottom 7 );
参数说明:
[in] hdc
设备上下文的句柄。
[in] left
边界矩形左上角的 x 坐标(以逻辑坐标表示)。
[in] top
边界矩形左上角的 y 坐标(以逻辑坐标表示)。
[in] right
边界矩形右下角的 x 坐标(以逻辑坐标表示)。
[in] bottom
边界矩形右下角的 y 坐标(以逻辑坐标表示)。
返回值:
成功,返回非0,失败,返回0
3、运行效果
验证BeginPaint只用于无效区域的绘图
1、创建一个Windows桌面应用程序
2、在WM_LBUTTON消息处理函数中,产生一个从(100,100)到(200,200)的无效区域范围,添加代码如下:
case WM_LBUTTONDOWN: { RECT rect{ 100,100,200,200 }; InvalidateRect(hWnd, &rect, FALSE); bDown = TRUE; } break;
3、在WM_PAINT的消息处理函数中,从(0,0)到(400,400)进行画线,
1 case WM_PAINT: 2 { 3 PAINTSTRUCT ps; 4 HDC hdc = BeginPaint(hWnd, &ps); 5 if (bDown) 6 { 7 MoveToEx(hdc, 0, 0, NULL); //移动到(0,0)位置 8 LineTo(hdc, 400, 400); //绘制从(0,0)到(400,400)的线 9 } 10 EndPaint(hWnd, &ps); 11 } 12 break;
4、由于无效区域只在(100,100)到(200,200),所以当鼠标按下时只有这个区域会进行绘制,运行效果如下
5、如果此时改变窗口大小,会使整个客户区无效,就能绘制出完整的线,效果如下
以定时间隔进行绘制
标签:200,Windows,WM,编程,int,hdc,坐标,图形,绘制 From: https://www.cnblogs.com/zhaotianff/p/18120634