CFont::CreateFont 详解

举报
allin_allin 发表于 2021/05/29 11:06:58 2021/05/29
【摘要】 函数原型: BOOL CreateFont(    int nHeight,    int nWidth,    int nEscapement,    int nOrientation,    int nWeight,    BYTE bItalic, ...

函数原型:

BOOL CreateFont(
   int nHeight,
   int nWidth,
   int nEscapement,
   int nOrientation,
   int nWeight,
   BYTE bItalic,
   BYTE bUnderline,
   BYTE cStrikeOut,
   BYTE nCharSet,
   BYTE nOutPrecision,
   BYTE nClipPrecision,
   BYTE nQuality,
   BYTE nPitchAndFamily,
   LPCTSTR lpszFacename 
);


参数详解:

nHeight:指定字体的字符单元或字符的逻辑单位高度。  

nWidth:指定所要求字体的字符的逻辑单位的平均宽度。如果此值为0,字体映射器选择一个closest match值,closest match值是由比较当前设备的特征系数与可使用字体的数字化特征系数之差的绝对值而确定的。

nEscapement:指定移位向量和设备X轴之间的一个角度,以十分之一度为单位。移位向量平行于正文行的基线。

nOrientation:指定每个字符的基线和设备X轴之间的角度。

nWeight:指定字体粗细。在0到1000之间指定字体的权值,如400表示标准体,700表示黑(粗)体,如果此值为0,则使用缺省的权值。下列值是预定义:FW_DONTCARE:0;FW_THIN;100;FW_EXTRALIGHT;200;FW_ULTRALIGHT;200;FW_LIGHT;300;FW_NORMAL:400;FW_MEDIUM;500;FW_SEMIBOLD;600;FW_DEMIBOLD;600;FW_BOLD:700;FW_EXTRABOLD;800;FW_BLACK;900。

bItalic:指定字体是否为斜体。如果设置为TRUE,则字体设置为斜体。

bUnderline:指定字体是否加下划线。如果设置为TRUE,则字体增加下划线。

cStrikeOut:指定字体是否加删除线。如果设置为TRUE,则字体增加删除线。

nCharSet::指定字符集。OEM_CHARSET指定的字符集与操作系统有关。可以使用DEFAULT_CHARSET值来允许字体的名字和大小来充分描述逻辑字体。如果指定的字体名不存在,任何字符集的字体都可以替代指定的字体,所以应该小心地用DEFAULT_CHARSET来避免不期望的结果出现。

nOutPrecision:指定输出精度,输出精度定义的输出必须密切匹配请求的字体的高度、宽度、字符定位、移位、字符间距和字符类型。  

nClipPrecision:指定裁剪精度,裁剪精度定义如何裁剪部分超出裁剪区的字符。

nQuality:指向输出质量,输出质量定义GDI如何仔细地将逻辑字体属性与实际物理字体属性相匹配。

nPitchAndFamily:指定字体间距和系列,低端二位指定字体的字符间距。

lpszFacename:字体名称。指向指定字体的字样名的、以\0结束的字符串指针,字符串的长度不能超过32个字符(包括字符\0),函数EnumFontFamilies可用来列举所有当前可用字体的字样名。  如果 lpszFacename 是 NULL,GDI使用与设备无关的字样。  


返回值:

如果成功,非零;否则为0。


头文件:

需要包含头文件#include "afxwin.h"


备注:

可以为设备上下文设定字体。
CreateFont 函数不创建新的Windows GDI字体。  它只选择最佳匹配从物理字体可用于GDI。  
当创建一个逻辑字体时,应用程序可以对大多数参数使用默认设置。  应始终提供特定值的参数是 nHeight 和 lpszFacename。  如果 nHeight 和 lpszFacename 未由应用程序设置,创建的逻辑字体设备相关。  
完成对 CreateFont 功能时创建的 CFont 对象,请使用 CDC::SelectObject 选择不同的字体到设备上下文,然后删除不再需要的 CFont 对象。


示例:


  
  1. // The code fragment shows how to create a font object,
  2. // select the font object into a DC (device context) for text
  3. // drawing, and finally delete the font object.
  4. // Initializes a CFont object with the specified characteristics.
  5. CFont font;
  6. VERIFY(font.CreateFont(
  7. 12, // nHeight
  8. 0, // nWidth
  9. 0, // nEscapement
  10. 0, // nOrientation
  11. FW_NORMAL, // nWeight
  12. FALSE, // bItalic
  13. FALSE, // bUnderline
  14. 0, // cStrikeOut
  15. ANSI_CHARSET, // nCharSet
  16. OUT_DEFAULT_PRECIS, // nOutPrecision
  17. CLIP_DEFAULT_PRECIS, // nClipPrecision
  18. DEFAULT_QUALITY, // nQuality
  19. DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
  20. _T("Arial"))); // lpszFacename
  21. // Do something with the font just created...
  22. CClientDC dc(this);
  23. CFont* def_font = dc.SelectObject(&font);
  24. dc.TextOut(5, 5, _T("Hello"), 5);
  25. dc.SelectObject(def_font);
  26. // Done with the font. Delete the font object.
  27. font.DeleteObject();






文章来源: blog.csdn.net,作者:allinallinallin,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/to_Baidu/article/details/54096849

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。