Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15324576
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: 嵌入式

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);

阅读(3850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~