1.GDI的目的之一就是支持与设备无关
2.GDI基本图形
(1)直线和曲线
(2)填充区域
(3)位图
(4)文本
3.设备描述表(DC)
在图形输出设备上绘图前,首先必须获得设备描述表句柄(hdc),这样Windows才允许使用设备
方法一:在处理WM_PAINT消息时,使用BeginPaint和EndPaint调用
hdc = BeginPaint (hwnd, &ps) ;
GDI
EndPaint (hwnd, &ps) ;
方法二:在处理非WM_PAINT消息时使用GetDC调用:
hdc = GetDC (hwnd) ;
注:每一个绘图的过程都是如下面的顺序来进行的:
获取一个设备环境句柄->利用设备环境句柄和GDI函数进行绘图->释放设备环境句柄
3.色彩
在大多数GDI函数调用中,使用COLORREF(32位无符号整数)表示一种色彩
31...24 23...16 15...8 7...0
0 蓝(B) 绿(G) 红(R)
WINGED.H中,定义了RGB宏,三个参数分别表示R(红)、G(绿)、B(蓝)
如:RGB(255,0,0)表示红色
RGB(0,0,0) 表示黑色
4.画图形
(1)直线
MoveToEx (hdc, xBeg, yBeg, NULL) ;//将坐标(xBeg,yBeg)设为直线开始点
LineTo (hdc, xEnd, yEnd) ;//直线终点坐标(xEnd,yEnd),同时该坐标成为当前位置
(2)矩形
Rectangle (hdc, xLeft, yTop, xRight, yBottom) ;
点(xLeft, yTop)是矩形的左上角,(xRight, yBottom)是矩形的右下角
(3)椭圆
Ellipse (hdc, xLeft, yTop, xRight, yBottom) ;
该矩形是椭圆的边界框
5.GDI对象
(1)画笔(Stock Pens)
Windows提供了三种画笔:BLACK_PEN(默认设备描述表中画笔),WHITE_PEN,NULL_PEN
hpen=(HPEN)GetStockObject(WHITE_PEN);//获得WHITE_PEN画笔句柄
SelectObject(hdc,hpen); //将画笔选进设备描述表,返回设备描述表中原有画笔
创建画笔:hPen = CreatePen (iPenStyle, iWidth, crColor) ;
删除画笔:DeleteObject (hPen) ;
(2)画刷
画刷是一个8×8的位图,它水平和垂直地重复使用来填入内部区域。
创建画刷:
hBrush = CreateSolidBrush (crColor) ;
hBrush = CreateHatchBrush (iHatchStyle, crColor) ;
hBrush = CreateBrushIndirect (&logbrush) ;