文本
GDI
字体
CFont
类
CDC
文本函数
DrawText
在格式化矩形中显示文本
TextOut
在当前或指定位置输入一行文本
TabbedTextOut 输出一行憨厚制表符的文本
ExtTextOut 输入一行文本,并有选择地给矩形填充背景色或改变字符间距
GetTextExtent
计算当前字体下一个字符串的宽度
GetTabbedTextExtent 计算当前字体下含有制表符字符串的宽度
GetTextMetrics
返回当前字体的字体度量(字符高度、字符平均宽度等)
SetTextAlign
给输出函数设定对齐参数
SetTextJustification
确定对齐一串文本时需要增加的宽度
SetTextColor
设定设备描述表的文本输出颜色
SetBkColor
设定设备描述表的背景色,输入字符背后的填充色
创建
CFont
CFont myfont;
Myfont.CreatePointFont(120,_T(“Times New Roman”));
//
Myfont.CreateFont(nHeight,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_DONTCARE,_T(“Times New Roman”));
//
LOGFONT lf;
ZeroMemory(&lf,sizeof(lf));//内存清0
Lf.lfHeight=120;
Lf.lfWeight=FW_BOLD;
Lf.lftalic=TRUE;
Lstrcpy(lf.lfFaceName,_T(“Times New Roman”));//将一个文字字符串从一个内存位置复制到另一个位置。(C函数memset strcpy _lcscpy)
Myfont.CreatePointFontIndirect(&lf);
实例:
在OnPaint中 通过重画两次字符 实现阴影字符效果
void CMfctestView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CFont font;
font.CreatePointFont(720,_T("Arial"));//
定义字体
dc.SelectObject(&font);//
将字体选入设备描述表
dc.SetBkMode(TRANSPARENT);//
设置透明背景
否则
默认白色背景会覆盖掉第一次绘制的阴影字体
CString str=_T("Hello!");//
定义绘制的文字
CRect rect;
GetClientRect(&rect);//
绘制区域
rect.OffsetRect(16,16);
dc.SetTextColor(RGB(192,192,192));
dc.DrawText(str,&rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);//
绘制底层灰色阴影字体
rect.OffsetRect(-16,-16);
dc.SetTextColor(RGB(0,0,0));
dc.DrawText(str,&rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);//
绘制黑色文字
// Do not call CView::OnPaint() for painting messages
}
★如果创建一个字体如:Arial 但系统中并没有安装这个字体,GDI会自动选择系统中与之相近的字样,而不是让这次调用失败。