八宝书库 > 文学其他电子书 > VC语言6.0程序设计从入门到精通 >

第36部分

VC语言6.0程序设计从入门到精通-第36部分

小说: VC语言6.0程序设计从入门到精通 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




和文本描绘“模式 ”,表 6…1 所示为控制颜色和描绘文本模式所需的函数。  



   表 6…1                 控制颜色和模式的函数  



      函数                              描述  

 GetBkColor()   传递显示描述表时,返回 COLORREF 值指示描绘文本时使用的背景色  

 SetBkColor()   传递显示描述表和 COLORREF 值,设置绘制文本的背景颜色  

 GetTextColor()  传递显示描述表时,返回 COLORREF 值,指示绘制文本的颜色  

 SetTextColor()  传递显示描述表和 COLORREF 时,为绘制的文本设置颜色  

 GetBkMode()    传递显示描述表时,返回绘画方式,可以是 OPAQUE 或者 TRANSPARENT  

 SetBkMode()    传递显示措述表和 OPAQUE 或 TRANSPARENT 参数时设置背景文本绘制方式  



6。2    CFont 类  



6。2。1    概述  



   CFont 类封装了一个 Windows  图形设备接口(GDI )字体并提供管理字体的成员函数。 

为使用 Cfont 类,可构造一个 CFont 对象并用 CreatFont()、CreateFontIndirect()、CreatePointFont() 

或 CreatePointFontIndirect()将一个 Windows 字体附加给对象,然后用对象的成员函数操纵字 

体。使用  CreatePointFont()和  CreatePointFontIndirect()常比使用  CreateFontIndirect()更容易, 


…………………………………………………………Page 156……………………………………………………………

                                                                                      第 6 章    文本和字体类  



因为前者可自动将字体高度的单位从点转换为逻辑单位。CFont 类在 MFC 类库中的继承关系 

如图 6…1 所示。  



                                                                           



                                   图 6…1    CFont 类在 MFC 类库中的位置  



6。2。2    主要成员函数  



     CFont  类中封装了与字体集相关的成员函数,通过这些成员函数可以方便地设置文本输 

出的字体。Cfont 类中的主要成员函数如表 6…2 所示。  



      表 6…2                                Cfont 类中的成员函数  



          成员                                                     作用  

 CFont                     构造一个 CFont 对象初始化  

 CreateFontIndirect        初始化一个由 LOGFONT 结构给出其特征的 CFont  对象  

 CreateFont                初始化用指定特性定义的 CFont 对象  

 CreatePointFont           用指定高度(用 0。1 点)和字体初始化一个 CFont 对象  

 CreatePointFontIndirect   与 CreateFontIndirect 相似,但字体高度用 0。1 点定义而不用逻辑单位定义操作  

 FromHandle                当给定一个 Windows HFONT 时,返回一个指向 CFont 对象的指针  

 HFONT                     返回附加给 CFont 对象的 Windows GDI 字体句柄  

 GetLogFont                用附加给 CFont 对象的逻辑字体信息填充一个 LOGFONT  



      下面详细介绍常用的成员函数。  



      1.CFont::CreateFont()函数  



      可以调用该函数创建自定义字体,该函数声明如下:  



     BOOL CreateFont  



     (  



     int        nHeight;      



     int        nWidth;        



     int        nEscapenment;    



     int        nOrientation;    



     int        nWeight;  



     BYTE    bItalic;    



     BYTE    bUnderline;  



     BYTE    cStrikeOut;    



     BYTE    nCharset;  



     BYTE    nOutPrecision;    



     BYTE    nClipPrecision;    



     BYTE    nQuality;    



                                                                                                      ·147 ·  


…………………………………………………………Page 157……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



    BYTE    nPitchAndFamily;  



    LPCTSTR lpszFacename  



    );  



    (1)nHeight  

    以逻辑单位方式指定字体的高度,字体高度可为以下值之一:  

    o  大于 0,此时高度被转化为设备单位,与可用字体的网格高度相比较;  

    o  等于 0,此时使用合理的默认大小;  

    o  小于 0,此时高度被转化为设备单位,而绝对值与可用字体的字符高度相比较。  

    nHeight  绝对值在转化后不可超过  16  384 设备单位。在所有的高度对比中,如果字体超 

过所要求的值,则字体映像器会寻找最大的或者最小的不超过所需大小的字体。  



    (2 )nWidth  

    指定字体中字符平均宽度(用逻辑单位 )。如果为 0,设备方向比率与可用字体的数字方 

向比率相比较,找一个最近的匹配,这个最近的匹配由值的差的绝对值决定。  



    (3 )nEscapement  

    指定偏离垂线与 x 轴在显示面上的夹角(用 0。1 度单位)。偏离垂线时从一行中开始一个 

字符到最后一个字符的线,此角从 x 轴逆时针方向度量。  



    (4 )nOrientation  

    指定字符基线和 x 轴之间的夹角(用 0。1 度单位)。此度数在坐标轴中由 x 轴顺时针度量 

时坐标系中 y 轴向下,顺时针方向从 x 轴旋转时,y 轴向上。  



    (5 )nWeight  

    指定字体磅数(用每 1000 点中墨点像素数计)。nWeight 可为 0 到 1000 中的任意整数值。  



    (6 )bItalic  

    指定字体是否为斜体。  



    (7 )bUnderline  

    指定字体是否带下划线。  



    (8)bStrikeOut  

    指定是否突出显示字符。如果设置为非零,则突出。  



    (9 )nCharSet  

    指定字体的字符集,预定义预定义字符集如表 6…3 所示。  



    表 6…3                          预定义字符集  



               常数                                       值  

 ANSI_CHARSET                      0  

 DEFAULT_CHARSET                   1  

 SYMBOL_CHARSET                    2  

 SHIFTJIS_CHARSET                  1280  

 EM_CHARSET                        255  



    OEM 字符集是和系统相关联的,而具有其它字符集的字体也可能存在于系统之中。一个 

使用未知字符集字体的应用不能翻译或解释一个以此字符集着色的字符串,相反,应将字符 

串直接输入到设备驱动。字体映射器不使用 DEFAULT_CHARSET 值,一个应用可以使用此 



 ·148 ·  


…………………………………………………………Page 158……………………………………………………………

                                                      第 6 章    文本和字体类  



值让字体名和大小完全描述逻辑字体。如果指定的名字不存在,为避免不可预料的结果,应 

用应谨慎地使用 DEFAULT_CHARSET 。  



    (10)nOutPrecision  

   指定所需的输出精度 。输出精度可定义需要的字体高度、宽度,字符方向、走格、间距之 

间 的 接 近 程 度 。 系 统 包 含 多 个 给 定 字 体 时 , 可 用        OUT_DEVICE_PRECIS  、 

OUT_RASTER_PRECIS 和 OUT_TT_PRECIS 值控制字体映射器如何选择字体。例如,如果 

一个系统包含一个名叫 Symbol 的字体,以光栅和 TrueType 形式存在,通过 OUT_TT_PRECIS 

可使字体映射器选择 TrueType 类型(指定 OUT_TT_PRECIS 强制字体映射器选择 TrueType 

字体)。  



    (11)nClipPrecision  

    指定所需的剪贴精度。剪贴精度用于定义如何剪贴部分超过范围的字符。要使用插入的 

只读字体,必须指定 CLIP_ENCAPSULATE 。要建立设备旋转、TrueType 和矢量字库,可以 

用 OR 操作符将 CLIP_LH_ANGLES 值与其他 nClipPrecision 值组合。如果 CLIP_LH_ANGLES 

位被设置,所有字体的旋转都根据坐标系的定位是左手方向还是右手方向来决定(要了解有 

关坐标轴定位的更多信息,请参阅 nOrientation 参数的描述)。如果 CLIP_LH_ANGLES 未被 

设置,设备字体按逆时针方向旋转,但其他字体的旋转依赖于坐标系的旋转定位。  



    (12)nQuality  

    指示字体的输出质量,定义了 GDI 必须使逻辑字体特性和物理字体特性相匹配的程度。 

可为以下值之一。  

    o  DEFAULT_QUALITY :字体的外观无关紧要。  

    o  DRAFT_QUALITY :当 PROOF_QUALITY 使用时,字体的外观不太重要 。对 GDI 光 

     栅字体来说,允许缩放。黑体、斜体、下划线、突出字体和综合处理在需要时可以综 

     合。  

    o  PROOF_QUALITY :字体的字符质量比精确的逻辑字体特性的匹配更重要。对  GDI 

     光栅字体,缩放无效,大小最接近的字体被选用。黑体、斜体、下划线、突出和综合 

     处理在需要时可以综合。  



    (13)nPitchAndFamily  

    指定字体的间距和家族。两个低位指定字体的间距,值可为:DEFAULT_PITCH                       或 

VARIABLE_PITCH 。FIXED_PITCH  应用可以将  TMPF_TRUETYPE  加到  nPitchAndFamily 

参数中,并选择一个 TrueType 字体。高四位指定字体家族,可为以下值之一。  

    o  FF_DECORATIVE :新奇字体,如以前英格兰的字体。  

    o  FF_DONTCARE :不在意或不知道。  

    o  FF_MODERN :笔型宽度不变的字体,有或无衬线。固定斜度的字体常是现代风格的, 

     如 Pica;Elite 和 Courier New 。  

    o  FF_ROMAN :笔划宽度可变(接比例调整空间)及有衬线字体。如 Times New Roman 

     和 Century Schoolbook 。  

    o  FF_SCRIPT :与手写体相似的字体,如 Script 和 Cursive 。  

    o  FF_SWISS :笔划宽度可变(接比例调整空间)及不带有衬线字体,如 MS Sans Serif 。  

    可用布尔操作 OR 指定一个 nPithAndFamily 值,以组合一个斜体和一个家族常数 。字体 



                                                                ·149 ·  


…………………………………………………………Page 159……………………………………………………………

Visual C++ 6。0 程序设计从入门到精通  



家族用普通方式描述了字体的外观,它们在所需铅字体无效时定义指定的字体。  



    (14)pszFacename  

    指定字体样式,可为 Cstring 型,或一个一空终止符结尾的字符串。此字符串的长度不能 

超过 30 个字符,Windows CE 中的 EnumFontFamilies 函数可用于枚举所有当前可用字体。如 

果为 NULL ,则 GDI 使用一个不依赖设备的字体。  

    总的说来,CreateFont 成员函数用于以指定的特征初始化一个 CFont 对象。此字体可被 

选作任何设备上下文的字体。CreateFont 函数不创建一个新 Windows GDI 字体,只是从 GDI 

物理字体库中选择最相近的匹配字体。当构造一个逻辑字体时,大部分参数可使用默认值。 

如果没有给定 nHeight 和 lpszFace Name,则逻辑字体是与设备有关的。当用 CreateFont 函数 

完成了一个 CFont 对象的创建时,先从设备环境中选出字体,然后删除 CFont 对象(字体定 

义完后就删除对象,以节省空间 )。  



    2 .CFont::CreateFontIndirect()函数  



    该成员函数以间接方式生成一个自定义字体,声明如下:  



    BOOL CreateFontIndirect(const LOGFONT* lpLogFont);  



    其中参数  lpLogFont  指向一个定义逻辑字体特征的  LogFont  结构。该函数用  lpLogFont 

指向的 LOGFONT 结构定义的特征初始化一个 CFont 对象,之后此字体即可被任何设备选作 

当前字体。此字体具有 LOGFONT 结构定义的特征。当使用 CDC::SelectObject 成员函数选择 

时,GDI 字体映射器将努力将逻辑字体和已存在的物理字体相匹配 。如果找不到匹配的逻辑 

字体,则尽可能找与之特性匹配最多的字体替代 。当用 CreateFontIndirect 函数完成 CFont 对 

象的创建后,先在设备环境中选出字体,然后删除 CFont 对象。  



    3 .CFont::CreatePointFont()函数  



    此函数用于创建指定字体和点的大小,声明如下:  



    BOOL CreatePointFont(int nPointSize;LPCTSTR lpszFaceName;CDC*pDC=NULL);  



    参数意义如下:  

    o  nPointSize :指定所需字体高度(用 0。1 点表示,例如,传递 120 表示 12 点字体)。  

    o  lpszFaceName :定义字体名称,为 Cstring 型或指向一个以空终止符结尾的字符串。此 

     字符

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的