1、GDI :Graphics Device Inter,图形设备接口。
2、GDI是通用接口,调用显示设备的驱动接口
3、GDI的主要目的就是支持与设备无关的图形;;位图有与设备有关位图和与设备无关位图。
4、几种获取设备环境句柄
1)在WM_PAINT消息过程 使用BeginPaint/EndPaint 不需要释放
2)GetDC,返回的句柄可以在整个客户区内绘制 释放:RleaseDC
3)GetWindowDC, 返回额句柄不仅包活客户区,非客户区,标题,菜单、滚动条,客户区外框 释放:RleaseDC
4)CreateDC,CreateDC("DISPLAY".NULL,NULL,NULL) =GetDc(NULL),获证整个屏幕的设备环境句柄
打印机的设备环境句柄就是使用CreateDC获取, 释放:DeleteDC
5、获取设备环境信息GetDeviceCaps(hcc, iIndex) ,其中iIndex { HORZRES---水平分辨率, VERTRES ---垂直分辨率}
如果HDC是整个屏幕的设备环境句柄,那么GetDeviceCaps(hcc, iIndex) == GetSystemMetrics
如果HDC是打印机设备环境,那么获取的是打印机设备环境相关信息
该函数还可以确认设备处理各类图形的能力
5、分辨率
1)显示器的分辨率,水平像素点总和和垂直像素点总和
2)打印机的分辨率,每一寸多个个像素点
6、保存设备环境
如果窗口样式 没有再注册时使用CS_OWNDC,那么通过各种方式获取的设备DC,释放前修改的DC属性,在释放DC后,恢复到默认属性。
如果使用CS_OWNDC,那么在释放前使用SaveDC,那么可以保存DC属性值。使用RestroreDC 可以恢复DC属性到上一次SaveDC前的属性,也就是上上一次SaveDC的结果
7、画线函数
1) MoveToEx 设置设备环境的当前位置
1)SetPixcel
2)PolyLineTo
POINT pts[5];
long a[5]={50,50,50,50,150};
long b[5]={10,20,30,40,50};
for(int i=0;i<5;i++)
{
pts[i].x=a[i];
pts[i].y=b[i];
}
//Polygon(hdc,pts,_countof(pts) );
//Polyline(hdc,pts,_countof(pts) );
::MoveToEx(hdc,700,200, &pt);
PolylineTo(hdc,pts,_countof(pts) );
8、获取设备环境的备用对象 GetStockObject
9、GID对象使用原则
1)不要删除备用对象
2)最终应删除你所创建的GDI对象
3)当Gdi对象呗选入一个有效的设备环境时,不要删除它
10、如果程序初始化需要创建很多画笔,那么使用CreateIndirect函数
11、设备坐标和逻辑坐标 只要当使用设备环境句柄参数的函数,计算结果就是使用映射模式对应的逻辑坐标,否则都是设备坐标(GetSystemMerrics 是使用设备坐标)