欢迎来到天天文库
浏览记录
ID:40239747
大小:1.05 MB
页数:92页
时间:2019-07-28
《Windows系统编程 李晓黎 第4章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Windows系统编程实用教程授课教师:职务:第4章GDI编程课程描述GDI(GraphicsDeviceInterface,图形设备接口)是Windows操作系统的核心组件和应用程序开发接口。使用GDI可以在应用程序中输出文字、画各种图形。本章知识点4.1GDI设备环境4.2坐标系统与Windows颜色4.3在对话框中输出文本4.4绘制基本图形4.1GDI设备环境4.1.1GDI设备环境的概念和设备环境句柄4.1.2CDC类和CpaintDC类4.1.3WM_PAINT消息4.1.1GDI设备环境的概念和设备环境句柄当程序开始画图时,必须
2、首先获得设备环境的句柄,Windows会自动使用默认的属性值填充设备环境结构体。HDC是表示设备环境句柄数据类型,它在WinDef.h中定义,代码如下:typedefHANDLEHDC;获得HDC句柄的两种方法1.调用BeginPaint()函数2.调用GetDC()函数1.调用BeginPaint()函数BeginPaint()函数的功能是为Windows准备绘图,函数原型如下:HDCBeginPaint(HWNDhwnd,LPPAINTSTRUCTlpPaint)throw();参数说明如下:hwnd,指定要绘图的窗口句柄。lpPain
3、t,指定绘图的信息。PAINTSTRUCT结构体的定义typedefstructtagPAINTSTRUCT{HDChdc;//用于绘图的设备环境句柄BOOLfErase;//指定是否才擦除背景。如果为非0值,则出现将擦除背景;否则不擦除。RECTrcPaint;//指定绘图法人矩形区域。BOOLfRestore;//保留,系统内部使用。BOOLfIncUpdate;//保留,系统内部使用。BYTErgbReserved[32];//保留,系统内部使用。}PAINTSTRUCT,*PPAINTSTRUCT;EndPaint()函数绘图结束后
4、,需要调用EndPaint()函数结束绘图,函数原型如下:voidEndPaint(HWNDhwnd,LPPAINTSTRUCTlpPaint)throw();2.调用GetDC()函数GetDC()函数的功能是获取指定窗口的客户区域或整个屏幕的显示设备环境句柄。函数原型如下:HDCGetDC(HWNDhWnd);参数hwnd指定要绘图的窗口句柄。函数的返回值是绘图所用的设备环境的句柄。绘图结束后,需要调用ReleaseDC()函数释放设备环境句柄,函数原型如下:intReleaseDC(HWNDhWnd,HDChdc);GetDC()函数
5、的实例HDChdc;hdc=::GetDC(hwnd);//下面可以使用hdc进行绘图了……::ReleaseDC(hwnd,NULL);4.1.2CDC类和CpaintDC类CDC类实际上是对HDC的封装,可以通过CDC::m_hDC属性获取被封装的HDC变量。CDC类提供一些与设备环境有关的函数,例如,可以设置颜色、设指字体、画各种图形、输出文字等。在实际应用时通常不直接使用CDC类,而是使用它的派生类CPaintDC。类CPaintDC的声明代码如下:classCPaintDC:publicCDC4.1.3WM_PAINT消息WM_P
6、AINT是Windows的重要消息。通常,应用程序对WM_PAINT消息的响应是在窗口中绘图或输出文字。当窗口中客户区的内容改变时,系统向窗口过程发送该消息。包括以下情形:新建窗口时;窗口的大小改变时;最大化、最小化窗口或恢复显示窗口时;移动窗口以致窗口相互重叠时;客户区是窗口中可以绘图和摆放控件的区域。绘图操作只能在客户区中进行。通常可以理解为窗口中除了标题栏、菜单、边框和状态栏以外的区域。WM_PAINT消息的处理函数WM_PAINT消息的处理函数为OnPaint(),默认的OnPaint()函数代码如下:voidCtestDlg::O
7、nPaint(){if(IsIconic()){CPaintDCdc(this);//用于绘制的设备上下文……}else{//用户的绘图语句可以添加在这。……CDialog::OnPaint();}}4.2坐标系统与Windows颜色4.2.1坐标映射模式4.2.2Windows颜色的表示方法4.2.3Color类4.2.1坐标映射模式坐标系统是描述位置的一组数值,可以使用坐标轴和度量单位来描述坐标系统。Windows使用二维坐标系统,即有X轴和Y轴两个坐标轴。默认情况下,坐标轴原点位于窗口客户区的左上角,X轴向右为正,Y轴向下为正。度量单
8、位为象素。CDC::SetMapMode()函数调用CDC::SetMapMode()函数可以设置坐标映射方式,函数原型如下:intSetMapMode(HDChdc,//设备环
此文档下载收益归作者所有