您的位置:首页 > 其它

采用不同的方法创建字体

2014-02-17 09:31 316 查看
http://blog.csdn.net/wubind/article/details/1968042

采用不同的方法创建字体

2007-12-15 10:08
[例3.8]编写一个单文档的应用程序Li3_8,采用不同的方法创建字体,并根据创建的字体输出不同的文本。
(1) 使用MFCAppWizard创建一个单文档应用程序Li3_8.
(2) 选择项目工作区的ClassView,展开Cli3_8View类,打开成员函数OnDraw().
(3) 在函数OnDraw()中添加如下代码。
void CLi3_8View::OnDraw(CDC* pDC)
{
CLi3_8Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString outstr[5];
outstr[1]="1.使用函数CreatPointFont()创建字体字";
outstr[2]="2.使用函数CreatFontIndirect()创建倾斜、带下划线的黑体字";
outstr[3]="3.使用函数CreateFont()创建带删除线的大号字";
outstr[4]="4.使用库存字体对象创建ANSI标准的等宽字";
CFont *OldFont,NewFont;
LOGFONT MyFont={
30,
10,
0,
0,
0,
1,
1,
0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH,
"黑体"
};
pDC->TextOut(0,10,"创建字体的几种方法:");
for(int i=1;i<5;i++){
switch(i){
case 1:
//使用函数CreatPointFont()创建字体
NewFont.CreatePointFont(200,"宋体",NULL);
break;
case 2:
//使用函数CreateFontIndirect()创建字体
NewFont.CreateFontIndirect(&MyFont);
break;
case 3:
//使用函数CreateFont()创建字体
NewFont.CreateFont(30,10,0,0,FW_HEAVY,false,false,
true,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH|FF_DONTCARE,"大号字");
break;
case 4:
//使用库存字体对象创建字体
pDC->SelectStockObject(ANSI_FIXED_FONT);
break;
}
OldFont=pDC->SelectObject(&NewFont);
pDC->TextOut(0,60*i,outstr[i]);
pDC->SelectObject(OldFont);
NewFont.DeleteObject();
}
}
(4) 编译、链接并运行程序,结果如图3.9所示。



图3.9创建字体的不同方法

例程总结:

经过例程的学习研究,我掌握了四种方法来创建四种不同的字体的方法:

  1.使用函数CreatePointFont()创建宋体字

  2.使用函数CreateFontIndirect()创建倾斜、带下划线的黑体字

3.使用函数CreateFont()创建带删除线的大号字

4.使用库存字体对象创建ANSI标准的等宽字
我已经掌握了使用CFont创建新字体对象和旧字体对象指针的方法,我已经能够使用LOGFONT来创建一个结构体变量,并将它传送给函数CreateFontIndirect()来创建一个新字体,并了解各个变量的意义,我懂得了使用文档指针来调用它的成员函数来输出新字体,使用完新字体之后,恢复旧字体,并删除旧字体。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: