dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>C/C++技术资料>文章内容
利用VC编程在界面上实现3D文字
来源:eNet     作者:    
【简 介】
  般情况下,程序开发人员都希望自己的程序美观大方,为了达到这一个要求,想尽办法美化自己的程序,如果在界面上适当的地方添加并显示3D文字,将不失为一个好的选择,可以达到事半功倍的效果,本文针对这一问题,通过一个简单的小程序,介绍如何实现这一目标。有兴趣的读者可以稍加改动,将该方法应用到自己的程序中去。 

 


般情况下,程序开发人员都希望自己的程序美观大方,为了达到这一个要求,想尽办法美化自己的程序,如果在界面上适当的地方添加并显示3D文字,将不失为一个好的选择,可以达到事半功倍的效果,本文针对这一问题,通过一个简单的小程序,介绍如何实现这一目标。有兴趣的读者可以稍加改动,将该方法应用到自己的程序中去。
  首先启动VC生成一个新的基于对话框的项目,命名为3Dtext,在对话框中重载OnPaint(),具体实现的思想是通过CDC::SetTextColor()分别设置文字的颜色为高亮(3DHILIGHT)和阴影(3DSHADOW)的状态下显示文字;同时注意在两次显示文字时要错开一个像素,这样才能达到预期的效果。具体实现代码如下:

void CMy3DTextDlg::OnPaint()
{ if (IsIconic())
{
 CPaintDC dc(this); // device context for painting
 SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
 // Center icon in client rectangle
 int cxIcon = GetSystemMetrics(SM_CXICON);
 int cyIcon = GetSystemMetrics(SM_CYICON);
 CRect rect;
 GetClientRect(&rect);
 int x = (rect.Width() - cxIcon + 1) / 2;
 int y = (rect.Height() - cyIcon + 1) / 2;
 // Draw the icon
 dc.DrawIcon(x, y, m_hIcon);
}
else
{
 CPaintDC dc(this); // device context for painting
 CString string;
 string="vc在线,编程无限!";
 CFont m_fontLogo;
 m_fontLogo.CreateFont(44, 0, 0, 0, 55, FALSE, FALSE,0,0,0,0,0,0, "Arial");
 dc.SetBkMode(TRANSPARENT);
 CRect rectText;
 GetClientRect(&rectText);
 CFont * OldFont = dc.SelectObject(&m_fontLogo);
 // draw text in DC
 COLORREF OldColor = dc.SetTextColor( ::GetSysColor( COLOR_3DHILIGHT));
 dc.DrawText( string, rectText+CPoint(1,1) , DT_SINGLELINE   DT_LEFT   DT_VCENTER DT_CENTER);
 dc.SetTextColor( ::GetSysColor( COLOR_3DSHADOW));
 dc.DrawText( string, rectText, DT_SINGLELINE   DT_LEFT   DT_VCENTER DT_CENTER);
 // restore old text color
 dc.SetTextColor( OldColor);
 // restore old font
 dc.SelectObject(OldFont);
 // CDialog::OnPaint();
}
}

 

 

上一篇:无闪烁刷屏技术的实现   下一篇:flex确认提示(confirm window)
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言数组排序小结
·Python 与 C++ 程序的简单实例对
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
·C++初学者应该关心的优秀图书一
·利用C语言小程序来解决大问题
·用C语言写PHP扩展的步骤
·用C语言扩展PHP功能
  相关文章
·无闪烁刷屏技术的实现
·在视图中同步显示鼠标的位置
·在VC中透明浮动按键的实现
·VC++学习:用SDK实现分隔条
·一个对Winsock完成端口模型封装
·重载函数的应用与深入剖析
·Gzip Zlib PNG 压缩算法,源码详
·窗口类的诞生(注册自己的窗口类)
·窗口类的诞生(注册自己的窗口类)
·让你的控制台程序也支持自动补齐
·C++中的fstream类用于文件的I/O
·显示内存中的HTML内容
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763