在Windows内部,字体是以一个名为LOGFONT的结构来表示的。
结构LOGFONT的定义如下:
typedef struct tagLOGFONT {
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, *PLOGFONT;
各成员的含义如下:
lfHeight: 以逻辑单位指定字体字符元(character cell)或字符的高度。字符高度值为字符元高度值减去内部行距(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,则使用默认的字体重量。
lfItalic: 当lfItalic为TRUE时使用斜体
lfUnderline: 当lfUnderline为TRUE时给字体添加下划线
lfStrikeOut: 当lfStrikeOut为TRUE时给字体添加删除线
lfCharSet: 指定字符集。可以使用下面的预定义值:ANSI_CHAR | SETOEM_CHARSET | SYMBOL_CHARSET | UNICODE_CHARSET其中OEM字符集是与操作系统相关的。
lfOutPrecision: 指定输出精度。输出精度定义了输出与所要求的字体高度、宽度、字符方向等的接近程度。它可以为下面的值之一:UT_CHARACTER_PRECIS
OUT_DEFAULT_PRECIS
OUT_STRING_PRECIS
OUT_STROKE_PRECIS
lfClipPrecision: 指定剪辑精度。剪辑精度定义了当字符的一部分超过剪辑区域时对字符的剪辑方式,它可以为下列值之一: CLIP_CHARACTER_PRECIS
CLIP_DEFAULT_PRECIS
CLIP_STROKE_PRECIS
lfQuality: 定义输出质量。输出质量定义了图形设备接口在匹配逻辑字体属性到实际的物理字体的所使用的方式,它可以为下列值之一:DEFAULT_QUALITY (默认质量)
DRAFT_QUALITY (草稿质量)
PROOF_QUALITY (正稿质量)
lfPitchAndFamily: 指定字体的字符间距和族。最低两位指定字体的字符间距为以下值之一:DEFAULT_PITCHFIXED_PITCHVARIABLE_PITCH第4到7位指定字体族为以下值之一:FF_DECORATIVEFF_DONTCAREFF_MODERNFF_ROMANFF_SCRIPTFF_SWISS这些值的具体含义可以参考Visual C++中关于结构LOGFONT的文档。字符间距和字体族可以使用逻辑或(OR)运算符来进行组合。
lfFaceName: 一个指定以NULL结尾的字符串的指针,它指定的所用的字体名。该字符串的长度不得超过32个字符,如果lfFaceName为NULL,图形设备接口将使用默认的字体名。
分享到:
相关推荐
1. 初始化一个LogFont结构,并设置所需的字体属性,如字体名称、大小、样式等。 2. 设置`lfOrientation`字段为你想要的旋转角度。例如,如果要旋转90度,可以设置为90L。 3. 调用`CreateFontIndirect`函数,传入...
LOGFONT结构体中文详解 (WORD)版
1. **声明API**:首先需要在程序中声明要使用的API函数,包括函数名、参数类型和返回值类型。例如,我们可以使用`声明`命令来声明`EnumFontFamilies`函数,它是Windows API中用于枚举当前系统中所有字体的函数。 2. ...
MFC是微软为Windows应用程序开发提供的一套C++类库,它极大地简化了Windows API的使用。下面将详细介绍四种在MFC中设置字体的方法,并提供相关的编程细节。 1. **CFont类的使用** CFont类是MFC中用于处理字体的...
在这里,`logFont`是一个`LOGFONT`结构,包含了关于字体的详细信息,如字体名、大小、样式等。`CreateFontIndirect`函数根据`LOGFONT`结构创建一个字体句柄,这个句柄后续可以在绘图操作中使用。 其次,创建设备上...
- **CreateFontIndirect**: 根据 LOGFONT 结构创建指定字体对象。 - **CreateScalableFontResource**: 为 TrueType 字体创建一个字体资源文件,并使用 AddFontResource 添加到系统中。 #### 字体绘制 - **DrawText*...
在C语言中,结构体(struct)是一种复合数据类型,它允许我们将不同类型的数据组合到一个单一的结构中,便于管理和操作。结构体的定义和使用是C语言编程中非常重要的概念,尤其对于初学者来说,理解和掌握结构体的...
1. 初始化`LOGFONT`结构:设置默认的字体、大小和样式。 2. 创建一个`CHOOSEFONT`结构,该结构包含`LOGFONT`和其他对话框选项,如是否允许用户选择斜体、粗体等。 3. 调用`ChooseFont`函数,传入`CHOOSEFONT`结构的...
LOGFONT结构体是Windows API中定义的,它包含了描述字体的各种属性,如字体名、大小、样式等。CFont是MFC提供的一般字体类,它用于在程序中创建和管理字体对象。CFontDialog是一个通用的字体对话框类,方便用户选择...
根据给定的信息,本文将详细解释C++中用于设置文本颜色和字体的API,并通过具体的API函数进行逐一解析,帮助读者更好地理解如何在C++环境下控制文本的颜色与样式。 ### 设置文本颜色 #### `SetTextColor` `...
`LOGFONT`结构体是Win32 API中定义的一个重要类型,它定义了字体的外观和特性。 逻辑字体的使用确保了在不同分辨率和DPI设置的显示器上,文本的视觉效果保持一致。此外,Win32 API还提供了`SelectObject`函数,用于...
`Cfont`类是MFC对Windows API中的`LOGFONT`结构和`HFONT`句柄的封装,它提供了创建、设置和管理字体的便捷方法。`LOGFONT`结构包含了定义字体的各种属性,如字体名称、字体大小、风格等。而`HFONT`是Windows系统中的...
首先,了解MFC库是微软为Windows应用程序开发提供的一套C++类库,它封装了Windows API,使得开发者可以通过面向对象的方式编写Windows程序。在MFC中,我们可以使用CFont类来处理字体相关操作,包括创建、设置和应用...
1. **声明API函数**:首先,你需要在PB工程中声明`ChooseFont`函数。这可以通过在`Window`或`Control`对象中添加API函数声明来完成,例如: ```c Declare Function ChooseFont Lib "comdlg32.dll" Alias ...
1. MFC 库:MFC 是一个面向对象的C++库,它封装了Windows API,使得开发者可以更容易地创建Windows应用程序。在MFC中,我们可以使用`CEdit`类来表示编辑框,这是一个可以显示和编辑文本的控件。通过`CEdit`的成员...
### Windows API函数详解 #### AddFontResource - 添加字体资源 - **功能**:此函数用于在Windows系统中添加一种字体资源。 - **应用场景**:当需要动态加载自定义字体供应用程序使用时,此函数非常有用。 #### ...
我们可以创建一个新的LOGFONT结构,该结构包含了字体的各种属性,包括字号的高度和宽度比例。 以下是一个简单的示例,展示了如何在Delphi中创建一个拉伸的字体: ```delphi uses Windows, Messages, SysUtils, ...
在编程领域,尤其是在Windows应用程序开发中,经常需要与系统资源进行交互,...这个过程涉及到Windows编程的基础知识,包括设备上下文、字体管理以及回调函数的使用,对理解和操作Windows系统资源有着重要的实践意义。
了解`LOGFONT`结构和`SelectObject`函数能帮助你更好地控制文本显示。 ### 6. Sockets编程 网络通信通常通过sockets实现,VC++提供了`CSocket`类封装了socket操作。理解TCP/IP协议基础,以及如何建立连接、发送和...
`GetLogFont`函数可以获取`LOGFONT`结构,其中包含了详细的字体信息。 ```cpp CFont font; m_fontDlg.GetFont(font); // 或者获取LOGFONT结构 LOGFONT lf; m_fontDlg.GetLogFont(&lf); ``` 4. **应用到控件**...