北京速实简石油科技开发有限公司
首页 公司简介 软件产品 应用案例 代理产品 留言板 联系我们
用精湛的技术提供100分的服务!
 

显示空心字的关键是使用路径。举例如下:
空心字
在开始一个路径前,我们先调用CDC类的成员函数BeginPath,然后调用一系列的输出函数,在完成绘制之后,我们可以调用CDC类的成员函数EndPath。在完成一个路径之后,我们可以调用StrokePath来绘制该路径。为了简单起见,我们仅给出应用程序的OnPaint成员函数。如下:
// 应用程序主窗口的重绘函数
void CMyWnd::OnPaint()
{
// 获得窗口的客户区设备上下文句柄
CPaintDC dc(this);
// 更改当前字体
LOGFONT lf;
dc.GetCurrentFont()->GetLogFont(&lf);
CFont font;
CFont *pOldFont; // 保存设备上下文最初使用的字体对象
lf.lfCharSet=134;
lf.lfHeight=-150;
lf.lfHeight=-150;
lf.lfWidth=0;
strcpy(lf.lfFaceName, "隶书");
font.CreateFontIndirect(&lf);
pOldFont=dc.SelectObject(&font);
dc.SetBkMode(TRANSPARENT);
// 更改当前画笔
CPen pen(PS_SOLID, 1, RGB(255, 0, 0));
CPen *pOldPen;
pOldPen=dc.SelectObject(&pen);
// 开始一个路径
dc.BeginPath();
dc.TextOut(10, 10, "空心字");
dc.EndPath();
// 绘制路径
dc.StrokePath();
//也可以用dc.StrokeAndFillPath()函数来代替,不过该函数会
//使用当前刷子填充路径的内部。
//所以你有必要在前面产生自己的刷子,并在最后删除,就象下面
//这样:
// 更改当前刷子
//CBrush br(HS_DIAGCROSS, RGB(0, 255, 255)), *pOldBrush;
//pOldBrush=dc.SelectObject(&br);

//pOldBrush=dc.SelectObject(&br);
//dc.SelectObject(pOldBrush);
// 恢复设备上下文的原有设置
dc.SelectObject(pOldFont);
dc.SelectObject(pOldPen);
}
其他颜色的边我想就是一个大一点的没有填充的空心字,当然你选择的笔的颜色就是你的边的颜色了。

 
北京速实简石油科技开发有限公司