『VC++技术内幕』学习笔记(8)(2)
/* TEXTMETRIC结构包含字体的所有逻辑单位信息原型如下: typedef struct tagTEXTMETRIC { /* tm */ int tmHeight; int tmAscent; int tmDescent; int tmInternalLeading; int tmExternalLeading
/*
TEXTMETRIC结构包含字体的所有逻辑单位信息原型如下:
typedef struct tagTEXTMETRIC { /* tm */
int tmHeight;
int tmAscent;
int tmDescent;
int tmInternalLeading;
int tmExternalLeading;
int tmAveCharWidth;
int tmMaxCharWidth;
int tmWeight;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
BYTE tmFirstChar;
BYTE tmLastChar;
BYTE tmDefaultChar;
BYTE tmBreakChar;
BYTE tmPitchAndFamily;
BYTE tmCharSet;
int tmOverhang;
int tmDigitizedAspectX;
int tmDigitizedAspectY;
} TEXTMETRIC;
*/
CFont fontText;
CString strText;
CSize sizeText;
fontText.CreateFont(-nPoints * 20, 0, 0, 0, 400, FALSE, FALSE, 0,
ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_ROMAN, "Tahoma");
//调用CFont::CreateFont函数,建立GDI的字体对象,参数1和2是字体的高度和宽度,最后一个参数是字体的名称
CFont* pOldFont = (CFont*) pDC->SelectObject(&fontText);
//将新字体选进设备,并返回指向前一次被选对象的指针。作用保存原来的对象,以便完成任务时恢复它
pDC->GetTextMetrics(&tm);
//参数是指向TEXTMETRIC结构的指针,得到当前字体的属性,
strText.Format("%d磅 WINDOWS 中文字体范例 1234567890", nPoints);
sizeText = pDC->GetTextExtent(strText);
pDC->TextOut(0, nPos, strText);
pDC->SelectObject(pOldFont);
//恢复原来的对象
nPos -= tm.tmHeight + tm.tmExternalLeading;
TEXTMETRIC结构包含字体的所有逻辑单位信息原型如下:
typedef struct tagTEXTMETRIC { /* tm */
int tmHeight;
int tmAscent;
int tmDescent;
int tmInternalLeading;
int tmExternalLeading;
int tmAveCharWidth;
int tmMaxCharWidth;
int tmWeight;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
BYTE tmFirstChar;
BYTE tmLastChar;
BYTE tmDefaultChar;
BYTE tmBreakChar;
BYTE tmPitchAndFamily;
BYTE tmCharSet;
int tmOverhang;
int tmDigitizedAspectX;
int tmDigitizedAspectY;
} TEXTMETRIC;
*/
CFont fontText;
CString strText;
CSize sizeText;
fontText.CreateFont(-nPoints * 20, 0, 0, 0, 400, FALSE, FALSE, 0,
ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_ROMAN, "Tahoma");
//调用CFont::CreateFont函数,建立GDI的字体对象,参数1和2是字体的高度和宽度,最后一个参数是字体的名称
CFont* pOldFont = (CFont*) pDC->SelectObject(&fontText);
//将新字体选进设备,并返回指向前一次被选对象的指针。作用保存原来的对象,以便完成任务时恢复它
pDC->GetTextMetrics(&tm);
//参数是指向TEXTMETRIC结构的指针,得到当前字体的属性,
strText.Format("%d磅 WINDOWS 中文字体范例 1234567890", nPoints);
sizeText = pDC->GetTextExtent(strText);
pDC->TextOut(0, nPos, strText);
pDC->SelectObject(pOldFont);
//恢复原来的对象
nPos -= tm.tmHeight + tm.tmExternalLeading;
}
4、编辑CMy82View::OnDraw函数
void CMy82View::OnDraw(CDC* pDC)
{
int nPosition = 0;
for (int i = 12; i <= 24; i += 2) {
ShowFont(pDC, nPosition, i);
}
}
5、编译运行,可以看到7行逐渐放大的同字体字符串。
书上还有一个例子大家应该也实际运行一下,雷神就不废话了,关于颜色和字体就说到这吧。下面将进入对话框和控件,利用它们我们便可以做一些小的应用了。
- 上一篇:『VC++技术内幕』学习笔记(9)
- 下一篇:『VC++技术内幕』学习笔记(7)
精彩图集