在MFC中使用自定义字体来进行文本输出

来源:互联网 发布:php模拟http 编辑:程序博客网 时间:2024/06/05 20:47

在MFC的CFOnt类封装了Windows GDI字体, 通过与CDC中有关的文本输出的函数结合使用,可以设置输出的文本的各种属性。


首先给出本次程序的demo


单文档程序中,需要在OnDraw函数中创建字体,该字体输出文本,并获取到字体的属性。具体实现代码如下:


void CMFCApplication13View::OnDraw(CDC* pDC)
{
CMFCApplication13Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;




CFont myfont, *oldFont;
LOGFONT font;
memset(&font, 0, sizeof(LOGFONT));
font.lfHeight = 50;
font.lfWidth = 60;
font.lfItalic = TRUE;
font.lfUnderline = TRUE;
StrCpyW(font.lfFaceName, _T("Times New Roman"));
myfont.CreateFontIndirectW(&font);
oldFont = pDC->SelectObject(&myfont);
pDC->SetTextColor(RGB(100, 10, 210));
pDC->SetBkMode(TRANSPARENT);


pDC->TextOutW(10, 20, _T("使用cfont自体"));


TEXTMETRIC tm;
pDC->GetTextMetrics(&tm);


CString str1, str2, str3;
str1.Format(_T("字体高度为: %d个像素"), tm.tmHeight);
str2.Format(_T("字体的平均宽度为: %d个像素"), tm.tmAveCharWidth);


pDC->SelectObject(oldFont);
pDC->SetTextColor(RGB(0, 0, 128));
pDC->TextOutW(10, 100, str1);
pDC->TextOutW(10, 120, str2);


// TODO:  在此处为本机数据添加绘制代码
}


使用要点:

在使用CFOnt对象的时候,在其新对象使用前,原则上要保存其原对象,待新对象使用完毕,要将其恢复。


TEXTMETRIC是用来保存字体相关的信息,如字体的高度,宽度,浓度等。可才用CDC类提供的GetTextMetrics()函数来获取字体的相关信息。



编程其实并不难,只要我们日积月累,肯定能够成功的.

0 0
原创粉丝点击