1 第9章 GDI编程2—文字、位图与图标 与 DOS 等传统字符界面用点阵模板显示文字不同,GUI 中的文字一般是利用轮廓字体中的控制点数据经计算后再绘制出来的。Windows 中的文字,采用的是基于二次贝塞尔曲线的 TrueType 轮廓字体(字体文件为*.TTF)。MFC 中的字体类为 CFont,字体对象选入 DC后,再用于 TextOut 等函数的文字绘制输出。 位图是指由像素阵列组成的数字化点阵图像,是 GUI 的基本元素。位图可分成与设备相关和无关的两类,分别用于图像的显示和存储,对应的 MFC 类分别为 CBitmap 和 CImage。 图标是一类大小固定的方型小位图,用于代表应用程序或文档子窗口。为了满足不同显示设备和不同使用目的的需要,在一个程序的图标资源中,一般包含多个不同大小和位数的图像。MFC 为应用程序提供了默认的图标,可用资源编辑器对其进行修改。 9.1 输出文本 一般使用 CDC 类的 TextOut 等函数,采用 DC 中的当前字体和文本颜色等来输出文本。还可以用 SetTextAlign 函数来设置文本的对齐方式,用 SetTextColor 和 SetBkColor 函数来分别设置文本的前景和背景颜色。 9.1.1 文本输出函数 在 CDC 类中,封装了多种文本输出函数,它们都是使用当前的字体、文本颜色和背景颜色,在屏幕或打印机上输出文本(绘制文字)。 常用的文本输出函数有基本的 TextOut、矩形区域的 DrawText 和可裁减和调字间距的扩展的 ExtTextOut。 1. TextOut TextOut 的函数原型为: virtual BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount ); BOOL TextOut( int x, int y, const CString& str ); 其中,x与y为显示串的左上角坐标,lpszString或str为要显示的文本串,nCount为串lpszString 2 中的字符数。例如: pDC->TextOut(10, 30, L"Test text"); 2. DrawText DrawText 的函数原型为: virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat ); int DrawText( const CString& str, LPRECT lpRect, UINT nFormat ); 其中,lpszString 或str 为要显示的文本串,nCount 为串lpszString 中的字符数,lpRect 为指定的显示区域,nFormat 为显示格式,可取表9-1 中值的位或“|”组合。 表9-1 文本显示格式nFormat 的常用取值 符号常量 含义 DT_BOTTOM 文本底对齐,必需与 DT_SINGLELINE.同时使...