1.第一种
font.CreateFont(160, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET,
OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE, "宋体");
函数原型:
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 :字体高度. 三中情况 1、>0:字体的高度值(设备坐标);2、=0:字体采用缺省值. 3、<0:此值的绝对值为高度。(可以设置成像素大小,使其填满整个区域)
nWidth :字体宽度.
nEscapement :文本行的倾斜度.
nOrientation :字符基线的倾斜度.
nWeight :字体的粗细.如下:
.FW_DONTCARE
.FW_THIN
.FW_EXTRALIGHT
.....
bItalic :字体是否为斜体
bUnderline :字体是否带下划线
cStrikeOut :字体是否带删除线
nCharSet :字体的字符集
.ANSI_CHARSET
.DEFAULT_CHARSET
.SYMBOL_CHARSET.....
nOutPrecision :字符的输出精度
nClipPrecision :字符裁剪的精度
nQuality :字符的输出质量
nPitchAndFamily :字符间距和字体族(低位说明间距,高位说明字符族)
lpszFacename :字体名称
2.第二种
1.将CFont m_font声明为类成员变量;
2.在初始化函数中:
m_font.CreatePointFont(100,_T("微软雅黑"));//100是可调字体大小。
函数原型:
BOOL CreatePointFont(
int nPointSize,
LPCTSTR lpszFaceName,
CDC* pDC = NULL
);
参数:
nPointSize
请求的字体的大小 。单位是磅的10倍 。
磅和像素的关系:
国外字体的大小一般是用磅表示,也就是PointSize的单位,1英寸=72磅, (Microsoft WORD 中指定字体的大小就是磅单位的)在实际应用中我们通常使用逻辑点,即象素点数目作为尺寸创建字体,比如用函数CreateFont。或者像 LOGFONT中lfHeight和lfWidth, 一般显示器上72磅的字在显示器上高度lfHeight是96个象素点,你输入参数100,表示需要10磅的字体,系统找到最匹配的大约就是10几个象素点的字体(96*10/72)。
lpszFaceName
一个CSTring或者一个指向null-terminated(以空为结尾的)字符串指针来标注字体名称。长度不得超过30个字母。函数EnumFontFamilies可列举能够使用的字体。如果lpszFaceName是NULL,那么GDI uses a device-independent typeface.
pDC
指向CDC对象的指针,用来将字体大小转化为逻辑单位,如果是NULL,那么就根据屏幕当前的上下文(context)来转化
返回值
非零为成功,否则失败