全部博文(2005)
分类: 嵌入式
2009-07-10 16:17:15
图形设备接口(GDI)是用于将应用程序与具体硬件相分离,使windows支持的应用程序在任何windows支持的图形输出设备上显示。
窗口应用程序输出图形的具体步骤:
(1)取得指定窗口的当前显示设备上下文。显示设备上下文是一个数据结构,包括窗口的参数及各种图形,文字属性,以及对以后的图形,文字输出的控制。
(2)选择用户坐标系及映射方式。
(3)设定用户坐标系中的观察窗口和设备坐标系中的显示视图。
(4)输出图形,文字和图像。
(5)释放所使用的显示设备上下文。
1 设备上下文的获取:
(1)在指定区域绘图的hdc:
在处理WM_PAINT消息时:
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
...
EndPaint(hwnd,&ps);
//其中 HDC hdc; PAINTSTRUCT ps;
从BeginPaint获取设备上下文句柄hdc后,就可以在ps指出的rcPaint的矩形中绘图。EndPaint使这一区域有效。
(2)在整个用户区域绘图的hdc.
hdc=GetDC(hwnd);
...
RelaeseDC(hwnd,hdc);
(3)在整个窗口绘图的hdc的获取。
hdc=GetWindowDC(hwnd);
...
ReleaseDC(hdc);
(4)在整个显示器区域内绘图的hdc.
hdc=CreateDC(lpszDevice,lpszOutput,lpData);
...
ReleaseDC(hdc);
如要在屏幕上绘图,可调用:
hdc=CreateDC("DISPLAY",NULL,NULL,NULL);
使用打印机输出图形,可调用:
hdc=CreateDC("IBMGRX","IBM Graphics","LPT1",NULL);
//参数1:设备驱动的DOS文件名
//参数2:专用设备名
//参数3:物理输出介质的DOS文件名
//参数4:设备驱动程序中DEVMODE结构体中的初始化数据
如不想获取设备上下文,只想得到其信息,可调用:
hdcInfo=CreateDC(lpszDevice,lpszOutput,lpData);
...
ReleaseDC(hdcInfo);
如想对位图的内存进行操作,如下:
hdcMem=CreateCompatiableDC(hdc);
...
DeleteDC(hdcMem);