在路径中输出文字
路径提供了一种机制,使得用户可以绘制更为复杂的图形。MFC类库没有对路径进行封装,但是用户可以使用CDC类提供的路径函数来应用路径。其中,BeginPath函数用于在当前的设备上下文中打开一个路径。EndPath函数用于关闭打开的一个路径。程序中在调用BeginPath函数之后,调用EndPath函数之前的所有点、线、文本、图形图像输出均称为当前路径的一部分。StrokePath函数用当前的画笔描述路径。由于CDC类提供的路径相关函数语法比较简单,多数函数没有参数,因此不对这些函数进行语法介绍。下面通过一个示例来介绍路径在文字输出中的作用,示例将利用路径在窗口中输出空心的文字。
例如,利用路径在窗口中输出空心的文字。
(1)创建一个文档/视图结构的应用程序,工程名称为“PathFont”。
(2)在视图类的OnDraw方法中编写程序代码。
void CPathFontView::OnDraw(CDC* pDC)
{
CPathFontDoc* pDoc = GetDocument(); //获取文档对象
ASSERT_VALID(pDoc); //验证文档对象
CFont mFont; //定义一个字体对象
//创建字体
VERIFY(mFont.CreateFont(
150, 50, 0, 0, FW_HEAVY, TRUE, FALSE,
0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_SWISS, "宋体"));
CPen pen(PS_SOLID,2,RGB(255,0,0)); //定义一个画笔
pDC->SelectObject(&pen); //选中画笔
pDC->BeginPath(); //开始一个路径
CFont *pOldFont = pDC->SelectObject(&mFont); //选中创建的字体
pDC->SetBkMode(TRANSPARENT); //设置画布的背景模式为透明
pDC->TextOut(30,30,"嫦娥一号探月卫星"); //输出文本
pDC->EndPath(); //关闭路径
pDC->StrokePath(); //用当前的画笔绘制路径
mFont.DeleteObject(); //上述字体对象
pDC->SelectObject(pOldFont); //选中之前的字体对象
}
注意:在使用路径时必需是一个闭合图形,否则可能无法绘制出任何图形。
(3)运行程序,效果如图1所示。
.jpg)
图1 根据路径输出文本