VC中特殊字体的实现方法讲解
2010-06-29 20:42:13 来源:WEB开发网渐变字:
// 获得窗口的客户区设备上下文句柄
CClientDC dc(this);
// 更改当前字体
LOGFONT lf;
dc.GetCurrentFont()->GetLogFont(lf);
CFont font, *pOldFont;
lf.lfCharSet=134;
lf.lfHeight=-150;
lf.lfWidth=0;
strcpy(lf.lfFaceName, "隶书");
font.CreateFontIndirect(lf);
pOldFont=dc.SelectObject(&font);
dc.SetBkMode(TRANSPARENT);
// 更改当前画笔为空
CPen pen(PS_NULL, 1, RGB(255, 0, 0)), *pOldPen;
pOldPen=dc.SelectObject(pen);
// 更改当前刷子
CBrush br, *pOldBrush;
pOldBrush=dc.SelectObject(br);
// 开始一个路径
dc.BeginPath();
dc.TextOut(10, 10, "渐变字");
dc.EndPath();
// 绘制渐变效果
dc.SelectClipPath(RGN_COPY);
for (int i=255; i>0; i——)
{
int iRadius=(600*i)/255;
dc.SelectObject(pOldBrush);
br.DeleteObject();
br.CreateSolidBrush(RGB(255, i, 0));
dc.SelectObject(br);
dc.Ellipse(-iRadius, -iRadius/3, iRadius, iRadius/3);
}
// 恢复设备上下文的原有设置
dc.SelectObject(pOldFont);
dc.SelectObject(pOldPen);
dc.SelectObject(pOldBrush);
空心字:
// 获得窗口的客户区设备上下文句柄
CClientDC dc(this);
// 更改当前字体
LOGFONT lf;
dc.GetCurrentFont()->GetLogFont(lf);
CFont font;
CFont *pOldFont; // 保存设备上下文最初使用的字体对象
lf.lfCharSet=134;
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, 130, "空心字");
dc.EndPath();
// 绘制路径
dc.StrokePath();
// 恢复设备上下文的原有设置
dc.SelectObject(pOldFont);
dc.SelectObject(pOldPen);
更多精彩
赞助商链接