友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

C语言实例教程(PDF格式)-第116章

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






dc。SelectObject(pOldFont);  



}  



                                                    



                 图9。 6 示例程序BrushDemo的运行结果  



以前几节讲述的方法编译并链接上面的应用程序,运行结果如图9。6 

所示。  



                     第四节 字体对象  



MFC类CFont封装了Windows图形设备接口中的字体对象。字体对象决 

定的设备上下文中进行文本输出的字符样式。在使用字体对象的时 

候,我们一般先创建一个CFont对象,然后调用CreateFont、 

CreateFontIndirect、CreatePointFont及CreatePointFontIndirect 

之一的成员函数来对该字体对象进行初始化。  



9。4。1 创建字体对象  



创建字体对象的最方便的方法是使用CreatePointFont函数, 

CreatePointFont函数仅需三个参数,其原型如下:  



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



第一个参数nPointSize以十分之一磅为单位设置字体的大小,磅是印 

刷行业中的常用度是单位,1磅=1/72英寸≈0。03528厘米。磅这个单 

位在涉及图形和文本输出的Windows应用程序中被大量的使用,因此 

我们应该熟知它和其它常用度量单位之间的换算关系。在后面的部分 

中我们还会讨论到在Windows编程中还会使用到的其它度量单位以及 


…………………………………………………………Page 550……………………………………………………………

它们之间的换算关系。  



参数lpszFaceName指定了创建字体对象所使用的字体名,pDC指向一 

个设备上下文对象,函数CreatePointFont将以磅表示的字体大小转 

换为pDC所指向的设备上下文中相应的逻辑单位。如果指针pDC为空, 

函数CreatePointFont将字体大小以设备单位表示。  



9。4。2 LOGFONT结构  



在Windows内部,字体是以一个名为LOGFONT的结构来表示的。结构 

LOGFONT的定义如下:  



typedef struct tagLOGFONT { // lf  



LONG lfHeight;  



LONG lfWidth;   



LONG lfEscapement;  



LONG lfOrientation;  



LONG lfWeight;   



BYTE lfItalic;   



BYTE lfUnderline;   



BYTE lfStrikeOut;   



BYTE lfCharSet;   



BYTE lfOutPrecision;   



BYTE lfClipPrecision;   



BYTE lfQuality;   



BYTE lfPitchAndFamily;   



TCHAR lfFaceName'LF_FACESIZE';   



} LOGFONT;  



各成员的含义如下:  



              lfHeight:               以逻辑单位指定字体字符元 

                                      (character        cell)或字符的高 


…………………………………………………………Page 551……………………………………………………………

              度。字符高度值为字符元高度值 

              减去内部行距 (internal

              leading)值。当lfHeight大于0 

              时,字体映射程序将该值转换为 

              设备单位,并将它与可用字体的 

              字符元高度进行匹配;当该参数 

              为0时,字体映射程度将使用一个 

              匹配的默认高度值;如果参数的 

              值小于0,则将其转换为设备单 

              位,并将其绝对值与可用字体的 

              字符高度进行匹配。  



              对于任何一种情况,字体映射程 

              度最终得到的字体高度值不会超 

              过所指定的值。以MM_TEXT映射模 

              式下,字体高度值和磅值有如下 

              的换算公式:  



              lfHeight=…MulDiv(PointSize;  

              GetDeviceCaps(hDC; LOGPIXELSY); 72);  



lfWidth:      以逻辑单位指定字体字符的平均 

              宽度。如果lfWidth的值为0,则 

              根据设备的纵横比从可用字体的 

              数字转换纵横中选取最接近的匹 

              配值,该值通过比较两者之间的 

              差异的绝对值得出。  



lfEscapement:  以十分之一度为单位指定每一行 

              文本输出时相对于页面底端的角 

              度。  



ifOrientation:  以十分之一度为单位指定字符基 

              线相对于页面底端的角度。  



lfWeight:     指定字体重量。在Windows中,字 

              体重量这个术语用来指代字体的 

              粗细程度。lfWeight的范围为0到 

              1000,正常情况下的字体重量为 

              400,粗体为700。如果lfWeight 

              为0,则使用默认的字体重量。  


…………………………………………………………Page 552……………………………………………………………

lfItalic:        当lfItalic为TRUE时使用斜体  



lfUnderline:     当lfUnderline为TRUE时给字体添 

                 加下划线  



lfStrikeOut:     当lfStrikeOut为TRUE时给字体添 

                 加删除线  



lfCharSet:       指定字符集。可以使用下面的预 

                 定义值:  



                 ANSI_CHARSET  



                 OEM_CHARSET  



                 SYMBOL_CHARSET  



                 UNICODE_CHARSET  



                 其中OEM字符集是与操作系统相关 

                 的。  



lfOutPrecision:  指定输出精度。输出精度定义了 

                 输出与所要求的字体高度、宽 

                 度、字符方向等的接近程度。它 

                 可以为下面的值之一:  



                 OUT_CHARACTER_PRECIS  



                 OUT_DEFAULT_PRECIS  



                 OUT_STRING_PRECIS  



                 OUT_STROKE_PRECIS  



lfClipPrecision:  指定剪辑精度。剪辑精度定义了 

                 当字符的一部分超过剪辑区域时 

                 对字符的剪辑方式,它可以为下 

                 列值之一:  



                 CLIP_CHARACTER_PRECIS  



                 CLIP_DEFAULT_PRECIS  


…………………………………………………………Page 553……………………………………………………………

                 CLIP_STROKE_PRECIS  



lfQuality:       定义输出质量。输出质量定义了 

                 图形设备接口在匹配逻辑字体属 

                 性到实际的物理字体的所使用的 

                 方式,它可以为下列值之一:  



                 DEFAULT_QUALITY (默认质量)  



                 DRAFT_QUALITY (草稿质量)  



                 PROOF_QUALITY (正稿质量)  



lfPitchAndFamily:  指定字体的字符间距和族。最低 

                 两位指定字体的字符间距为以下 

                 值之一:  



                 DEFAULT_PITCH  



                 FIXED_PITCH  



                 VARIABLE_PITCH  



                 第4到7位指定字体族为以下值之 

                 一:  



                 FF_DECORATIVE  



                 FF_DONTCARE  



                 FF_MODERN  



                 FF_ROMAN  



                 FF_SCRIPT  



                 FF_SWISS  



                 这些值的具体含
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!