CreateDC的使用事宜

编程入门 行业动态 更新时间:2024-10-06 12:25:11

CreateDC的使用<a href=https://www.elefans.com/category/jswz/34/1760598.html style=事宜"/>

CreateDC的使用事宜

 图形设备接口(GDI,Graphics   Device   Interface)的主要目标之一是支持在输出设备(如视频显示器、打印机和绘图仪)上的与设备无关的图形。   GDI通过将应用程序与不同输出设备特性相隔离,使Windows应用程序能够毫无问题地在Windows支持的任何图形输出设备上运行。     
  Windows中的图形基本上是由从GDI.EXE模块中输出的函数处理的(尽管一些绘制函数实际上具有USER.EXE的入口点),GDI.EXE模块调用在不同驱动程序文件中的例程,其中有一个.DRV驱动程序文件用于控制显示屏幕,并且可能有一个或多个其他的.DRV驱动程序文件用来控制打印机或绘图仪。     
  Windows   GDI使用两种坐标系统。使用虚拟坐标系统可以使程序不依赖于具体的硬件,使用设备坐标系统可以使程序和硬件紧密相联。     
  GDI含有在Windows应用程序内部执行、且与设备无关的图形操作函数,这些函数可产生各种各样的线、正文和位图,它们可以输出到许多不同的输出设备上。GDI允许一个应用程序产生笔、刷子、字体和位图,以供特定的输出操作使用。下面列出GDI中几组比较常用的函数:     
  ·设备上下文函数     
  ·椭圆和多边形函数     
  ·绘图工具函数     
  ·位图函数     
  ·绘图属性函数     
  ·正文函救     
  ·映射函数。     
  ·坐标函数     
  ·元文件(metafile)函数     
  ·区域函数     
  ·裁剪(clipping)函数·     
  窗口应用程序输出图形的操作步骤如下:     
  ①取得指定窗口的当前显示设备上下丈,显示设备上下文实际上是一个数据结构,它包括该窗口的参数及各种图形、文字属性的现行设定值,它们对以后的图形、文字输   出命令起控制作用。     
  ②选择用户坐标系及映射方式。     
  ③设定用户坐标系中的观察窗口和设备坐标系中的显示视区。     
  ④输出图形、文字和图象。     
  ⑤释放所使用的显示设备上下文。     
    
  当想要在图形输出设备(例如屏幕或打印机)上绘制图形时,必须首先获得设备上下文的句柄。先给出这个句柄,Windows才允许程序使用设备,在GDI函数中将句柄作为一个参数传入,向Windows标明需要使用的设备。     
  设备上下文中包含许多属性,当GDI在不同的设备上工作时都要用到这些属性。使用这些属性可使GDI只关心起始和终止坐标的大小,而不必关心有关对象的其他属性,如颜色、背景等等,因为这些都是设备上下文的一部分。当需要修改这些属性时,只需调用一个修改设备上下文中属性的参数,以后的程序中都使用修改后的设备上下文属性。设备上下文是连接Windows应用程序、设备驱动程序以及输出设备的纽带。     
  获取设备上下文句柄有多种方法。 最一般的方法是当处理一条消息时获得了设备上下文、并在退出窗口之前释放它 。一般的处理方法如下:     
  在处理WM_PAINT消息时     
  case   WM_PAINT:     
  hdc=BeginPaint(hwnd,&ps)     
  EndPaint   (hwnd,&ps);     
  其数据结构为:     
  HDC   hWnd;     
  PAINTSTRUCT   ps;     
  而在windows.h中定义了PAINTSTRUCT的数据结构。     
  type   struct   tagPAINTSTRUCT   {     
  HDC   hdC;     
  BOOL   fErase;     
  RECT   rcPaint;     
  BOOL   fRestore;     
  BOOL   flncUpdate;     
  BYTE   rgbReserved[16];     
  }PAINTSTRUCT;     
  其中,hdc用于标识显式上下文,fErase指出背景是否重画,rcPaint是涂色矩形,其余的域均为保留。这里的hdc是BeginPaint返回的设备上下文句柄,有了从DeginPaint获取的设备上下文句柄,就可以也只能在ps指出的rcPaint的矩形内绘图,EndPaint调用使这一区域有效。     
  第二种方法如下所示, 使用这种方法获取和释放设备上下文可以在整个用户区内画图,图形在整个用户区域内都有效 :     
  hdC=GetDc   (hwnd   );     
  …画图操作…     
  ReleaseDC   (hwnd   ,   hdc   );     
  使用下面 第三种方法获取和释放设备上下文,可以在整个窗口内画图,图形在整个窗口内有效 :     
  hdC=GetWindowDc(hwnd) ;     
  …画图操作…     
  ReleaseDc(hwnd,hdc);     
  使用下面 第四种方法获取和释放设备上下文,可以在整个显示器区域内画图,图形在整个显示器区域内部有效 :     
  hdc=CreateDC   (lpszDriver   ,lpszDevice   ,lpszOutput   ,   lpData);     
  …画图操作…     
  ReleaseDC(hdc);     
  其中lpszDriver指向设备驱动程序的DOS文件名(不带扩展名),lpszDevice指向专用设备名(例如Epson   Fx-80),lpszOutput指向物理输出介质(文件或输出端口)的DOS文件名或设备名,lpData指向含有设备驱动程序的设备专用的初始化数据的DEVMODE数据结构。例如:     
  hdc=CreateDC("DISPLAY",NULL,NULL,NULL);     
  使用屏幕画图,而:     
  hdc=   CreateDC   ("IBMGRX","IBM   Graphics","LPT1",NULL   );     
  在打印机上输出图形,这里的lpData置为默认值,可以在WIN.INI中找到初始化值。     
  如果不需要获取设备上下文,即不需要在设备上下文中操作,只需了解有关设备上下文的信息,可以用如下语句:     
  hdcInfo   =   CreateDC   (lpszDriver,   lpszDevice,lpszOutput,   lpData   );     
  ……     
  DeteteDC   (hdcInfo);     
  另外,还可以使用设备上下文来对位图的内存进行控制,如下所示:     
  hdcMem   =   CreateCompatibleDC   (hdc)     
  OeleteDc(hdcMem   );     
  一个元文件是以二进制形式编码的GDI调用集合,可通过获取一个元文件设备上下文来建立一个文件:     
  hdcMeta=CreateMetaFile(lpszFilename);     
  ……     
  hmf=CloseMetaFile(hdCMeta);     
  在元文件设备上下文有效期间,使用hdcMeta所进行的任何GDI调用都成为元文件的一部分,当调用CloseMetaFile时,设备上下文句柄变化无效,函数返回元文件(hmf)的句柄。     
  一个设备上下文通常涉及物理设备,如视频显示器、打印机等,所以需要获取有关该设备的信息,如显示器大小和彩色能力等。可以通过调用GetDeviceCaps函数来获取这样的信息:     
  nValue=GetDeviceCaps   (hdc,nIndex);     
  这里的hdc标识设备上下文,nIndex确定返回值,它可以是window.h中所定义的28个标识符中的一个,例如nIndex=DRIVEVERSION,则该函数返回的是版本号。     
    
  真正影响在用户区域上绘制过程的设备上下文属性是“映射方式”,与映射方式属性密切相关的还有如下四个设备上下义属性:窗口原点、视窗原点、窗口范围和视窗范围。

更多推荐

CreateDC的使用事宜

本文发布于:2024-03-14 09:53:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736212.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:事宜   CreateDC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!