GDI 是 Graphics Device Interface 的缩写,称为图形设备接口,主要用来绘图,由动态链接库 GDI32.DLL 提供支持。
GDI 就是一个函数库,提供了很多绘图函数(也就是GDI32.DLL 中的导出函数),上节使用的 TextOut 就是其中之一。GDI 非常重要,不但应用程序使用它来绘图,Windows 本身也使用GDI来显示用户界面,比如菜单、滚动条、图标和鼠标指针等。
示例代码:
运行效果:
注意:坐标的原点都是客户区的左上角。
注意:当 nHeight >= nBottomRect 且 nWidth = nRightRect 时,那么绘制出的就是一个圆。
示例代码:
运行效果:
GDI 就是一个函数库,提供了很多绘图函数(也就是GDI32.DLL 中的导出函数),上节使用的 TextOut 就是其中之一。GDI 非常重要,不但应用程序使用它来绘图,Windows 本身也使用GDI来显示用户界面,比如菜单、滚动条、图标和鼠标指针等。
GDI 基础
这一部分讲解如何绘制简单的图形,而在轻量进阶部分讲解如何美化图形。1) 绘制矩形
Rectangle 函数可以在窗口上绘制一个矩形,它的原型为:
- 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 ;

注意:坐标的原点都是客户区的左上角。
2) 带圆角的矩形
如果您觉得上面矩形过于方正,那么可以使用 RoundRect 函数,它可以画出带有圆角边框的矩形,原型为:
- 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 ;

3) 绘制椭圆
Ellipse() 函数可以用来绘制椭圆,它的原型为:
- BOOL Ellipse(
- HDC hdc, //设备环境句柄
- int nLeftRect, //左上角x坐标
- int nTopRect, //左上角y坐标</