CFont::CreateFont

CFont::CreateFont

  

 

初始化指定特性的一 CFont 对象。

 
 
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

指定所需的高度(以逻辑单位)字体。 说明参见 LOGFONT结构的 lfHeight 成员。Windows SDK 的。 在转换后,nHeight 的绝对值不能超过16,384个组件单位它。 对于所有高度比较,字体制图员查找不超过请求的大小或更小字号的最大字体,如果任何字体超过请求的大小。

nWidth

FONT指定平均宽度(以逻辑单位)的字符。 如果 nWidth 为0,计算机的长宽比使用的可用字体的数字化长宽比、查找最佳匹配,取决于该差值的绝对值。

nEscapement

指定角度(在0.1度单元)在转义的情况下矢量图像和的X轴之间显示面。 转义的情况下矢量采用行通过原点的第一个和行中的最后一个字符。 该角度从该X轴逆时针)测量。 请参见 LOGFONT 结构的 lfEscapement 成员。Windows SDK 有关更多信息。

nOrientation

指定角度(在0.1度单元)在字符的基线并将X轴之间。 该角度从该y方向和放置如果从坐标系统的X轴该y方向上启用坐标系的X轴逆时针)测量。

nWeight

指定字体权重(在将墨迹的每像素1000)。 请参见 LOGFONT 结构的 lfWeight 成员。Windows SDK 有关更多信息。 中描述的值是近似的;实际的外观取决于字样。 有些字体具有 FW_NORMAL、 FW_REGULAR并仅 FW_BOLD 权重。 如果 FW_DONTCARE 指定,则使用默认权重。

bItalic

指定字体是否为斜体。

bUnderline

指定字体是否加下划线。

cStrikeOut

指定在字体的字符是否已触击。 指定删除线字体,如果设置为一个非零值。

nCharSet

在 Windows SDK 的 LOGFONT 结构指定字体的字符setSee lfCharSet 成员的值列表。

OEM字符集依赖于执行。

还有其他一些字符集的字体可以存在于系统。 使用具有未知字符集内的字体的应用程序不能尝试转换或解释将呈现与该字体的字符串。 相反,应传递字符串直接向输出设备驱动程序。

字体制图员不使用 DEFAULT_CHARSET 值。 应用程序可以使用此值允许字体的名称和大小全面介绍逻辑字体。 如果具有指定名称的字体不存在,从所有字符集内的字体可以用指定的字体进行替换。 若要避免意外的结果,应用程序应谨慎使用 DEFAULT_CHARSET 值。

nOutPrecision

指定预期输出精度。 输出精度定义的输出必须密切匹配请求的字体的高度、宽度、orientation转义字符、导出和间距。 为值列表及其更多信息参见 LOGFONT 结构的 lfOutPrecision 成员。Windows SDK。

nClipPrecision

指定所需的剪辑精度。 剪辑精度定义如何剪辑字符的一部分位于剪辑区域之外的字符。 为值列表参见 LOGFONT 结构的 lfClipPrecision 成员。Windows SDK。

若要使用嵌入式只读的字体,应用程序必须指定 CLIP_ENCAPSULATE。

为了实现设备的一致的旋转,TrueType字体和矢量,应用程序可以使用合并 CLIP_LH_ANGLES 值的或运算符与任何其他 nClipPrecision 值。 如果 CLIP_LH_ANGLES 位设置,所有字体的旋转取决于坐标系统的orientation是否在左侧或右侧使用的。 (针对坐标系的orientation的更多信息,请参见 nOrientation 参数的说明。)如果 CLIP_LH_ANGLES 未设置,设备字体逆时针始终旋转,但是,其他字体的旋转依赖于坐标系统的orientation。

nQuality

指定字体的输出质量,定义的GDI必须仔细尝试匹配逻辑字体属性设置为这些实际物理字体。 为值列表参见 LOGFONT 结构的 lfQuality 成员。Windows SDK。

nPitchAndFamily

指定字体的间距和系列。 为值列表及其更多信息参见 LOGFONT 结构的 lfPitchAndFamily 成员。Windows SDK。

lpszFacename

 CString 或指向指定字体的字样名称为Null终止的字符串。 此字符串的长度不能超过30个字符。 Windows EnumFontFamilies 功能来枚举所有当前可用的字体。 如果 lpszFacename 是 NULL,GDI使用与设备无关的字样。

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

字体可以以后选择作为字体为所有设备上下文。

CreateFont 函数不创建新的Windows GDI字体。 它只选择最佳匹配从物理字体可用于GDI。

当创建一个逻辑字体时,应用程序可以对大多数参数使用默认设置。 应始终提供特定值的参数是 nHeight 和 lpszFacename。 如果 nHeight 和lpszFacename 未由应用程序设置,创建的逻辑字体设备相关。

完成对 CreateFont 功能时创建的 CFont 对象,请使用 CDC::SelectObject 选择不同的字体到设备上下文,然后删除不再需要的 CFont 对象。

 
// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

// Initializes a CFont object with the specified characteristics. 
CFont font;
VERIFY(font.CreateFont(
   12,                        // nHeight
   0,                         // nWidth
   0,                         // nEscapement
   0,                         // nOrientation
   FW_NORMAL,                 // nWeight
   FALSE,                     // bItalic
   FALSE,                     // bUnderline
   0,                         // cStrikeOut
   ANSI_CHARSET,              // nCharSet
   OUT_DEFAULT_PRECIS,        // nOutPrecision
   CLIP_DEFAULT_PRECIS,       // nClipPrecision
   DEFAULT_QUALITY,           // nQuality
   DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
   _T("Arial")));                 // lpszFacename

// Do something with the font just created...
CClientDC dc(this);  
CFont* def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font.  Delete the font object.
font.DeleteObject(); 


标头: afxwin.h

 
posted on 2015-01-20 14:13  friend_joey  阅读(721)  评论(0编辑  收藏  举报