MFC Windows 程序设计(4)

来源:互联网 发布:洛阳智网网络休息 编辑:程序博客网 时间:2024/04/30 22:06
 
文本 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会自动选择系统中与之相近的字样,而不是让这次调用失败。