字体效果

来源:互联网 发布:手机淘宝好友如何查看 编辑:程序博客网 时间:2024/05/03 19:12

一、空心字

// 绘制空心字void CFontEffectsSampleView::OnMenuKongxinFont() {// 获得窗口的客户区设备上下文句柄CClientDC dc(this);// 更改当前字体LOGFONT lf;dc.GetCurrentFont()->GetLogFont(&lf);CFont font;CFont *pOldFont; // 保存设备上下文最初使用的字体对象lf.lfCharSet=134;lf.lfHeight=-80;lf.lfWidth=0;strcpy(lf.lfFaceName, "宋体");font.CreateFontIndirect(&lf);pOldFont=dc.SelectObject(&font);dc.SetBkMode(TRANSPARENT);// 更改当前画笔CPen pen(PS_SOLID, 2, RGB(255, 50, 0));CPen *pOldPen;pOldPen=dc.SelectObject(&pen);// 开始一个路径dc.BeginPath();dc.TextOut(10, 10, "这里是空心字效果示例");dc.EndPath();// 绘制路径dc.StrokePath();// 恢复设备上下文的原有设置dc.SelectObject(pOldFont);dc.SelectObject(pOldPen);}



二、渐变颜色的字体

// 颜色渐变字体void CFontEffectsSampleView::OnMenuitemJianbianFont() {// TODO: Add your command handler code here// 获得窗口的客户区设备上下文句柄CClientDC dc(this);// 更改当前字体LOGFONT lf;    dc.GetCurrentFont()->GetLogFont(&lf);    CFont font, *pOldFont;    lf.lfCharSet=134;    lf.lfHeight=-50;    lf.lfWidth=0;    strcpy(lf.lfFaceName, "宋体");    font.CreateFontIndirect(&lf);    pOldFont=dc.SelectObject(&font);    dc.SetBkMode(TRANSPARENT);    // 更改当前画笔为空    CPen pen(PS_NULL, 1, RGB(0, 0, 255)), *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(i, i, i));        dc.SelectObject(&br);        dc.Ellipse(-iRadius, -iRadius/3, iRadius, iRadius/3);    }    // 恢复设备上下文的原有设置    dc.SelectObject(pOldFont);    dc.SelectObject(pOldPen);    dc.SelectObject(pOldBrush); }


三、文字跟随鼠标

void CFontEffectsSampleView::OnMouseMove(UINT nFlags, CPoint point) { mousePoint.x = point.x; mousePoint.y = point.y;CView::OnMouseMove(nFlags, point);  Invalidate();   // UpdateWindow();}void CFontEffectsSampleView::OnPaint() {CPaintDC dc(this); // device context for painting dc.TextOut(mousePoint.x+3, mousePoint.y+3, "欢迎");//dc.TextOut(m_iXExtend,m_iYExtend,"水平文字滚动测试");/*CRect rc(m_iXExtend, m_iYExtend, m_iXExtend+15, m_iYExtend+150);   dc.DrawText("垂直文字滚动测试", &rc, DT_EDITCONTROL|DT_WORDBREAK|DT_CENTER);    */    CView::OnPaint();}


四、旋转字体

// 实现旋转字体void CFontEffectsSampleView::OnMenuitemRotateFont() {// TODO: Add your command handler code here      CClientDC dc(this);// 获得窗口的客户区设备上下文句柄 //定义字体属性LOGFONT lf;lf.lfHeight = 50; lf.lfWidth = 0; lf.lfEscapement = 400; //倾斜40度,十分之一度为单位lf.lfOrientation = 0;lf.lfItalic = FALSE; lf.lfUnderline = FALSE;lf.lfStrikeOut = FALSE;lf.lfCharSet = GB2312_CHARSET; strcpy(lf.lfFaceName,"楷书");//创建字体CFont font;font.CreateFontIndirect(&lf);//更改当前字体CFont *pOldFont  = dc.SelectObject(&font);//绘制字体dc.SetBkMode(TRANSPARENT);dc.SetTextColor(RGB(0,255,0));dc.TextOut(10,300,"这里是旋转字体示例");//恢复设备上下文的原有设置dc.SelectObject(pOldFont);}




五、文字水平滚动

void CFontEffectsSampleView::OnTimer(UINT nIDEvent) {CRect   rect;   GetClientRect(rect);//int iWidth = rect.Width();    int iHeight = rect.Height();Invalidate();   UpdateWindow();m_iYExtend+=2;   if (m_iYExtend > iHeight)   {m_iYExtend = 0;}CView::OnTimer(nIDEvent);}int CFontEffectsSampleView::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CView::OnCreate(lpCreateStruct) == -1)return -1; SetTimer(1,   100,   NULL);   return 0;}void CFontEffectsSampleView::OnPaint() {CPaintDC dc(this); // device context for painting dc.TextOut(mousePoint.x+3, mousePoint.y+3, "欢迎"); dc.TextOut(m_iXExtend,m_iYExtend,"水平文字滚动测试"); CRect rc(m_iXExtend, m_iYExtend, m_iXExtend+15, m_iYExtend+150);   dc.DrawText("垂直文字滚动测试", &rc, DT_EDITCONTROL|DT_WORDBREAK|DT_CENTER);        CView::OnPaint();}


六、3D立体文字

创建使用的对象,并使用SetTextColor()函数分别进行高亮状态显示和阴影状态显示


//3D字体效果void CFontEffectsSampleView::OnMenuitem3dFont() {// TODO: Add your command handler code here// 获得窗口的客户区设备上下文句柄CClientDC dc(this);//定义字体属性LOGFONT lf;lf.lfHeight = 50;lf.lfWidth = 0;lf.lfEscapement = 0;lf.lfOrientation = 0;lf.lfWeight = FW_HEAVY;lf.lfItalic = FALSE;lf.lfUnderline = FALSE;lf.lfStrikeOut = FALSE; lf.lfCharSet = GB2312_CHARSET;strcpy(lf.lfFaceName,"隶书");//创建字体CFont font;font.CreateFontIndirect(&lf);//更改当前字体CFont *pOldFont  = dc.SelectObject(&font);//绘制字体dc.SetBkMode(TRANSPARENT);dc.SetTextColor(::GetSysColor(COLOR_3DDKSHADOW));CString text = "这里是3D字体示例";CRect rc;GetClientRect(&rc);// 开始一个路径dc.BeginPath();dc.DrawText( text, rc, DT_SINGLELINE|DT_LEFT|DT_VCENTER|DT_CENTER);dc.SetTextColor(::GetSysColor( COLOR_3DHILIGHT) );dc.DrawText( text, rc+CPoint(2, 2), DT_SINGLELINE|DT_LEFT|DT_VCENTER|DT_CENTER);dc.EndPath();// 绘制路径dc.StrokePath();dc.SelectObject(pOldFont);}






















原创粉丝点击