收藏本站 
广告服务 
网站地图 
>> 我们从网络和杂志上收集了近100000余篇各类电脑技术、网络技术、软件技术等方面的文章教程,我们的收录原则:不是精华拒不收录!
先飞电脑技术网技术文章
VC编程在界面上实现3D文字
[ 作者:佚名    转贴自:网络转载    阅读次数:50    更新时间:2007-3-21 13:55:00   录入:刘光勇 ]         
      一般情况下,程序开发人员都希望自己的程序美观大方,为了达到这一个要求,想尽办法美化自己的程序,如果在界面上适当的地方添加并显示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="yesky,我们的编程网站";
  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();
 }
}
上一篇:VC++编程实现对曝光不足照片的修复  下一篇: 用Visual C++ 6实现OpenGL编程  

网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号