- BOOL Rectangle(
- HDC hdc, //设备环境句柄
- int nLeftRect, //矩形左上角x坐标
- int nTopRect, //矩形左上角y坐标
- int nRightRect, //矩形右下角x坐标
- int nBottomRect //矩形右下角y坐标
- );
- case WM_PAINT:
- hdc = BeginPaint(hwnd, &ps);
- Rectangle(hdc, 50, 50, 150, 150);
- EndPaint(hwnd, &ps);
- return 0 ;
- BOOL RoundRect(
- HDC hdc, //设备环境句柄
- int nLeftRect, //矩形左上角x坐标
- int nTopRect, //矩形左上角y坐标
- int nRightRect, //矩形右下角x坐标
- int nBottomRect, //矩形右下角y坐标
- int nWidth, //用来画圆角的椭圆的宽度
- int nHeight //用来画圆角的椭圆的高度
- );
- case WM_PAINT:
- hdc = BeginPaint(hwnd, &ps);
- RoundRect(hdc, 20, 20, 150, 150, 25, 25);
- EndPaint(hwnd, &ps);
- return 0 ;
- BOOL Ellipse(
- HDC hdc, //设备环境句柄
- int nLeftRect, //左上角x坐标
- int nTopRect, //左上角y坐标
- int nRightRect, //右下角x坐标
- int nBottomRect //右下角y坐标
- );
- case WM_PAINT:
- hdc = BeginPaint(hwnd, &ps);
- Ellipse(hdc, 20, 20, 180,90);
- EndPaint(hwnd, &ps);
- return 0 ;
- BOOL MoveToEx(
- HDC hdc, //设备环境句柄
- int x, //起始位置x坐标
- int y, //起始位置y坐标
- LPPOINT lpPoint //指向用于保存当前位置的POINT结构体的指针
- );
注意:win32不再支持 MoveTo,只支持它的扩展函数 MoveToEx。有了起点,接下来就可以使用 LineTo 函数画直线了。LineTo 函数用于从当前绘图位置向指定点绘制一条直线,它的原型为:
- BOOL LineTo(
- HDC hdc, //设备环境句柄
- int xEnd, //终点的x坐标
- int yEnd //终点的y坐标
- );
- case WM_PAINT:
- hdc = BeginPaint(hwnd, &ps);
- MoveToEx(hdc, 150, 150, NULL); //设定起始点,不保存当前点坐标
- LineTo(hdc,200, 60); //第一条线
- LineTo(hdc, 250, 150); //第二条线
- LineTo(hdc, 150, 150); //第三条线
- EndPaint(hwnd, &ps);
- return 0 ;
- HPEN CreatePen(
- int nPenStyle, //画笔的样式
- int nWidth, //画笔的宽度
- COLORREF crColor //画笔的颜色
- );
宏定义 | 宏定义对应的值 | 说明 |
---|---|---|
PS_SOLID | 0 | 实线 |
PS_DASH | 1 | 虚线(段线),要求画笔宽度 <= 1 |
PS_DOT | 2 | 点线,要求画笔宽度 <= 1 |
PS_DASHDOT | 3 | 线、点,要求画笔宽度 <= 1 |
PS_DASHDOTDOT | 4 | 线、点、点,要求画笔宽度 <= 1 |
PS_NULL | 5 | 不可见 |
PS_INSIDEFRAME | 6 | 实线,但画笔宽度是向里扩展的 |
- HGDIOBJ SelectObject(
- HDC hdc, //设备环境句柄
- HGDIOBJ ho //GDI对象句柄
- );
- //窗口过程
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
- PAINTSTRUCT ps;
- HDC hdc;
- //定义一个画笔句柄,请定义为静态变量
- static HPEN hPen;
- switch (message){
- case WM_CREATE:
- //创建宽度为2个像素的红色点线画笔,保存句柄到 hPen 变量
- hPen = CreatePen(PS_SOLID, 2, RGB(255, 0, 0));
- break;
- case WM_PAINT:
- hdc = BeginPaint(hWnd, &ps);
- //选入画笔到设备环境
- SelectObject(hdc, hPen);
- //绘制三角形
- MoveToEx(hdc, 150, 150, NULL);
- LineTo(hdc,200, 60); //第一条线
- LineTo(hdc, 250, 150); //第二条线
- LineTo(hdc, 150, 150); //第三条线
- EndPaint(hWnd, &ps);
- break;
- case WM_DESTROY:
- //请做好善后工作,处理 WM_DESTROY 消息时删除之前我们创建的一切GDI对象
- DeleteObject(hPen);
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
- }
HBRUSH CreateSolidBrush( COLORREF crColor ); // crColor为画刷颜色CreateHatchBrush 函数可以用来创建一个指定颜色的含有特定阴影样式的画刷,原型为:
- HBRUSH CreateHatchBrush(
- int fnStyle, //画刷样式
- COLORREF crColor //画刷颜色
- );
- //窗口过程
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
- PAINTSTRUCT ps;
- HDC hdc;
- //定义两个画刷,请定义为静态变量
- static HBRUSH hSolidBrush;
- static HBRUSH hHatchBrush;
- switch (message){
- case WM_CREATE:
- //创建蓝色实心画刷,保存句柄到 hSolidBrush 变量
- hSolidBrush = CreateSolidBrush(RGB(0, 0, 255));
- //创建绿色交叉阴影画刷,保存句柄到 hHatchBrush 变量
- hHatchBrush = CreateHatchBrush(HS_DIAGCROSS,RGB(0,255,0));
- break;
- case WM_PAINT:
- hdc = BeginPaint(hWnd, &ps);
- //选入蓝色实心画刷到设备环境
- SelectObject(hdc, hSolidBrush);
- Rectangle(hdc, 0, 0, 200, 100); //绘制矩形
- //选入绿色交叉画刷到设备环境
- SelectObject(hdc, hHatchBrush);
- Ellipse(hdc,0,100,200,200); //绘制椭圆
- EndPaint(hWnd, &ps);
- break;
- case WM_DESTROY:
- //请做好善后工作,处理 WM_DESTROY 消息时删除之前我们创建的一切GDI对象。
- DeleteObject(hSolidBrush);
- DeleteObject(hHatchBrush);
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
- }
联系客服