欢迎来到天天文库
浏览记录
ID:15762783
大小:178.00 KB
页数:20页
时间:2018-08-05
《vc++讲义第10单元 图形设备接口》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第10单元图形设备接口-214-第10单元图形设备接口本单元教学目标介绍Windows的图形设备接口(GDI)和MFC的图形对象。学习要求了解图形设备接口的概念,掌握画笔、画刷和字体的用法,以及逻辑坐标和设备坐标的概念。授课内容在Windows程序中,应用程序的输出并不直接面向物理的设备,如显示屏或打印机,而是针对一个称之为设备环境(DeviceContext)的逻辑设备进行操作,设备环境与实际设备之间的信息传送由Windows直接管理。在MFC应用程序中,所有的绘制调用均通过相应的设备环境对象实现,设备环境对象封装了相应的WindowsA
2、PI功能,由一个32位的HDC类型句柄标识。在MFC类库中,用CDC类封装设备文本对象。CPaintDC类是从CDC类派生的设备环境类。CPaintDC类的对象在OnPaint()函数中使用。另外,CClientDC类也是常用的CDC派生类,用于在OnPaint()函数外访问设备环境。在第9单元的程序举例中,我们已经看到了CPaintDC类的应用。但是,那些举例都很单调,没有颜色、线型和字体的变化。本单元首先介绍一些在设备环境下使用的绘图工具(图形设备接口对象),使用它们可改善应用程序的外观,然后介绍图形设备接口(GDI)的坐标系统。10.
3、1画笔与画刷画笔是用来画线的工具,是CPen类的对象。其使用方法为://声明画笔对象,并创建宽度为3的红色实线画笔CPenpenRed;penRed.CreatePen(PS_SOLID,3,RGB(255,0,0));//使用新的画笔,保存原来的画笔以便恢复CPen*pOldPen;第10单元图形设备接口-214-pOldPen=dc.SelectObject(&pOldPen);//以下为作图代码,所画的线均使用新画笔……//恢复原来的画笔dc.SelectObject(pOldPen);保存并恢复原来画笔的原因是,每个图形设备接口对象
4、要占用一个HDC句柄,而可用的句柄数量是有限的,在使用完后要及时释放。否则,每次执行OnPaint()函数时均要重新创建图形接口对象,未被释放的非法句柄会留在设备上下文对象中,积累下去将导致严重的运行错误。CPen类的成员函数CreatePen()用于创建画笔,其原型为:BOOLCreatePen(intnPenStyle,intnWidth,COLORREFcrColor);第1个参数是画笔样式,可取画笔样式说明PS_SOLID创建实线笔PS_DASH创建由短线构成的虚线PS_DOT创建由点构成的虚线PS_DASHDOT创建由短线和点构成
5、的虚线PS_DASH_DOTDOT创建由短线、点、点构成的虚线PS_NULL创建空(空白)画笔各种虚线只有当线宽为1时有效。第2个参数为线宽,第3个参数为线的颜色,可使用RGB()函数指定。RGB()函数有3个参数,分别代表选取颜色的红、绿、蓝分量,可取0~255之间的整数值。例如RGB(255,255,255)为白色,RGB(0,0,0)为黑色。画刷是用来填充图形的工具,是CBrush类的对象,使用方法与画笔类似,也要定义画刷对象,创建画刷并保存原来的画刷,在绘图工作结束后恢复原来的画刷。创建画刷的成员函数的原型为:BOOLCreateS
6、olidBrush(COLORREFcrColor);参数crColor指定了画刷的颜色。除此而外,还可以创建一个阴影风格的画刷:BOOLCreateHatchBrush(intnIndex,COLORREFcrColor);其中参数nIndex指定了阴影风格,可取值为:阴影风格说明HS_BDIAGONAL从左下角到右上角的45度斜线HS_CROSS水平线与垂直线HS_DIAGCROSS相互垂直的45度线HS_FDIAGONAL从左上角到右下角的45度斜线HS_HORIZONTAL水平线HS_VERTICAL垂直线第10单元图形设备接口-2
7、14-CDC类的SelectObject()函数原型如下:CPen*SelectObject(CPen*pPen);CBrush*SelectObject(CBrush*pBrush);virtualCFont*SelectObject(CFont*pFont);即SelectObject()是重载的CDC类成员函数。SelectObject()将一个GDI对象选入到设备环境中,新选中的对象将替换原有的同类型对象,然后返回指向被替换的对象的指针。10.2绘画模式在Windows中,绘图的最终效果不但取决于画笔和画刷的设置,还可以通过设定绘图
8、模式来修正。屏幕绘图模式可通过CDC的成员函数SetROP2()设定,其原型为:intSetROP2(intnDrawMode);其中参数nDrawMode为选定的绘图模式,常用
此文档下载收益归作者所有