visual c++中字体类CFont的用法
字体类CFont
Windows提供了多种与设备无关的不同尺寸的字体。有效地使用这些Windows字体,不用在编程时下很大功夫,就可以明显地增强各种应用程序的功能。字体是Windows GDI必要的组成部分,这意味字体的使用与其他GDI对象一样。它们可以缩放和剪切,可以像选取画笔或者画刷一样选取设备环境。所有关于撤消选中和删除的GDI规则都适用于字体。
字体由CFont类进行管理,创建CFont类必须使用CFont类的成员函数,这点与CPen和CBrush有所不同。
1.CFont提供的创建字体的成员函数
利用CFont创建字体的方法有两种,它们是:
(1)BOOL CreateFontIndirect(const LOGFONT* lpLogFont )
该对象通过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;
LOGFONT结构中各个成员的含义如下:
lfHeight:设置字体的高度。
lfWidth:设置字体的平均宽度。
LfEscapement:设定字符串底线与水平线的夹角,夹角是以0.1度为单位。
lfOrientation:设定每一个字符的底线与水平线的夹角,夹角是以0.1度为单位。
lfWeight:设置字体的粗细,其取值范围为0~1000,通常400为正常粗细,700为粗,如果取值为0,则选择默认粗细。
lfItalic:如果为TRUE,则字体为斜体。
lfUnderline:如果为TRUE,则字体带下划线。
lfStrikeOut:如果为TRUE,则字体带删除线。
lfCharSet:指定字符集。
LfOutPrecision:指定输出时字体的精度。
lfClipPrecision:指定输出时字体被裁剪的精度。
lfQuality:指定输出质量。
lfPitchAndFamily:设置字体的斜度和字体类型。
lfFaceName[LF_FACESIZE]:设置字体字样。
(2)CreateFont()成员函数
CreateFont()成员函数的原型:
BOOL CreateFont(
int nHeight, //以逻辑单位方式指定字体的宽度
int nWidth, //以逻辑单位方式指定字体中字符的平均宽度
int nEscapement, //指定偏离垂线和X轴在显示面上的夹角(单位:0.1度)
int nOrientation, //指定符串基线和X轴之间的夹角(单位:0.1度)
int nWeight, //指定字体镑数
BYTE bItalic, //指定字体是否为斜体
BYTE bUnderline, //指定字体是否带下划线
BYTE cStrikeOut, //指定是否是字体字符突出
BYTE nCharSet, //指定字体的字符集
BYTE nOutPrecision, //指定所需的输出精度
BYTE nClipPrecision, //指定所需的剪贴精度
BYTE nQuality, //指示字体的输出质量
BYTE nPitchAndFamily, //指定字体的间距和家族
LPCTSTR lpszFacename //指定字体字样的名称
)
参数说明:
nHeight:其取值范围可以大于0、等于0或小于0。nHeight以逻辑单位方式指定字体的高度,字体的高度可任选下列值。
² 大于0:此时高度被转化为设备单位,与可用字体的网格高度做比较。
² 等于0:使用合理的缺省大小。
² 小于0:此时高度被转化为设备单位,而绝对值与可用字体的字符高度做比较。
注意:nHeight绝对值在转化后不可超过16384设备单位。
nEscapement:指定偏离垂线与X轴在显示面上的夹角。偏离垂线是从一行中开始到最后一个字符的线,此角从x轴逆时针方向度量。
nOrientation:指定字符基线和X轴之间的夹角。此度数在坐标轴中由X轴逆时针方向度量时坐标系中Y轴向下,顺时针方向从X轴旋转时,Y轴向上。