Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14497718
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:56:46

下载本文示例代码
  一般情况下,程序开发人员都希望自己的程序美观大方,为了达到这一个要求,想尽办法美化自己的程序,如果在界面上适当的地方添加并显示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();  } } zmbbs=1;   一般情况下,程序开发人员都希望自己的程序美观大方,为了达到这一个要求,想尽办法美化自己的程序,如果在界面上适当的地方添加并显示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();  } } zmbbs=1; 下载本文示例代码


VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字VC编程在界面上实现3D文字
阅读(208) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~