C++编程中Windows图像编程概要.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:15 大小:25KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

C++编程中Windows图像编程概要.pdf

C++编程中Windows图像编程概要.pdf

预览

免费试读已结束,剩余 5 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C++编程中Windows图像编程概要(2006-08-21)-CSDN-最近更新()牋设备接口(GDI,GraphicsDeviceInterface)的主要目标之一是支持在输出设备(如视频显示器、打印机和绘图仪)上的与设备无关的图形。GDI通过将应用程序与不同输出设备特性相隔离,使Windows应用程序能够毫无问题地在Windows支持的任何图形输出设备上运行。Windows中的图形基本上是由从GDI.EXE模块中输出的函数处理的(尽管一些绘制函数实际上具有USER.EXE的入口点),GDI.EXE模块调用在不同驱动程序文件中的例程,其中有一个.DRV驱动程序文件用于控制显示屏幕,并且可能有一个或多个其他的.DRV驱动程序文件用来控制打印机或绘图仪。WindowsGDI使用两种坐标系统。使用虚拟坐标系统可以使程序不依赖于具体的硬件,使用设备坐标系统可以使程序和硬件紧密相联。GDI含有在Windows应用程序内部执行、且与设备无关的图形操作函数,这些函数可产生各种各样的线、正文和位图,它们可以输出到许多不同的输出设备上。GDI允许一个应用程序产生笔、刷子、字体和位图,以供特定的输出操作使用。下面列出GDI中几组比较常用的函数:·设备上下文函数·椭圆和多边形函数·绘图工具函数·位图函数·绘图属性函数·正文函救·映射函数。·坐标函数·元文件(metafile)函数·区域函数·裁剪(clipping)函??窗口应用程序输出图形的操作步骤如下:①取得指定窗口的当前显示设备上下文,显示设备上下文实际上是一个数据结构,它包括该窗口的参数及各种图形、文字属性的现行设定值,它们对以后的图形、文字输出命令起控制作用。②选择用户坐标系及映射方式。③设定用户坐标系中的观察窗口和设备坐标系中的显示视区。④输出图形、文字和图象。⑤释放所使用的显示设备上下文。当想要在图形输出设备(例如屏幕或打印机)上绘制图形时,必须首先获得设备上下文的句柄。先给出这个句柄,Windows才允许程序使用设备,在GDI函数中将句柄作为一个参数传入,向Windows标明需要使用的设备。设备上下文中包含许多属性,当GDI在不同的设备上工作时都要用到这些属性。使用这些属性可使GDI只关心起始和终止坐标的大小,而不必关心有关对象的其他属性,如颜色、背景等等,因为这些都是设备上下文的一部分。当需要修改这些属性时,只需调用一个修改设备上下文中属性的参数,以后的程序中都使用修改后的设备上下文属性。设备上下文是连接Windows应用程Page1/15http://www.chinavideo.org序、设备驱动程序以及输出设备的纽带。获取设备上下文句柄有多种方法。最一般的方法是当处理一条消息时获得了设备上下文、并在退出窗口之前释放它。一般的处理方法如下:在处理WM_PAINT消息时caseWM_PAINT:hdc=BeginPaint(hwnd,&ps)//代码EndPaint(hwnd,&ps);其数据结构为:HDChWnd;PAINTSTRUCTps;而在windows.h中定义了PAINTSTRUCT的数据结构。typestructtagPAINTSTRUCT{HDChdC;BOOLfErase;RECTrcPaint;BOOLfRestore;BOOLflncUpdate;BYTErgbReserved[16];}PAINTSTRUCT;其中,hdc用于标识显式上下文,fErase指出背景是否重画,rcPaint是涂色矩形,其余的域均为保留。这里的hdc是BeginPaint返回的设备上下文句柄,有了从BeginPaint获取的设备上下文句柄,就可以也只能在ps指出的rcPaint的矩形内绘图,EndPaint调用使这一区域有效。第二种方法如下所示,使用这种方法获取和释放设备上下文可以在整个用户区内画图,图形在整个用户区域内都有效:hdC=GetDc(hwnd);⋯画图操作⋯ReleaseDC(hwnd,hdc);使用下面第三种方法获取和释放设备上下文,可以在整个窗口内画图,图形在整个窗口内有效:Page2/15http://www.chinavideo.orghdC=GetWindowDc(hwnd);⋯画图操作⋯ReleaseDc(hwnd,hdc);使用下面第四种方法获取和释放设备上下文,可以在整个显示器区域内画图,图形在整个显示器区域内部有效:hdc=CreateDC(lpszDriver,lpszDevice,lpszOutpu