VC编程中如何在界面上实现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="电脑报,我们的学习报";
 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();
}
}

时间: 2024-08-04 09:09:37

VC编程中如何在界面上实现3D文字的相关文章

vc++-VC++编程中HICON,这个是图标句柄,想这种带H的都是引用对象的地址的,是吗??

问题描述 VC++编程中HICON,这个是图标句柄,想这种带H的都是引用对象的地址的,是吗?? VC++编程中HICON,这个是图标句柄,想这种带H的**都**是引用对象的地址的,是吗??不会引用其他的吧,句柄只是引用对象的地址吧? 解决方案 局柄的数据结构并没有公开. Windows程序一书中的理解:句柄是一个32位的整数,实际上是windows在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引.因为windows的内存管理经常会将当前空闲对象的内存释放掉,当需要时访问再重新提交到物理

vc++-VC编程中提取源程序代码应用另一个程序

问题描述 VC编程中提取源程序代码应用另一个程序 请问各位大神,现在我有一段VC二维码识别程序的源代码,如何将其提取并编译成一个新的程序,满足从指定位置访问图片文件,输出识别信息?求指导. 在VC编程环境下实现,谢谢! 解决方案 既然有源代码,那么你要做的就是程序得到输入文件路径,然后传给源码中的函数对应参数,获取函数返回结果,进行处理. 解决方案二: 参考:http://blog.csdn.net/liuyu60305002/article/details/8713399 解决方案三: 有一段

如何修改QQ登录界面上的系统文字

如何修改QQ登录界面上的系统文字?下面小编给大家介绍下.   首先,进入QQ的安装目录,xx(安装路径)TencentQQI18N2052这个文件夹.用记事本打开其中名为"StringBundle.xml"的文件.   这个文件里的中文内容,就是QQ登录窗口中涉及到的所有文字信息,我们只要将它们修改为自己想要的内容,然后保存即可.   无需重启电脑,现在运行QQ快捷方式,登录界面的文字部分是不是已经变成我们修改的版本了?   如果修改StringBundle.xml文件后保存报错,可以

巧用Photoshop中创建被火焰环绕的3D文字的步骤

  巧用Photoshop中创建被火焰环绕的3D文字的步骤~简单粗暴~有兴趣的可以自己学习~在海报中可以运用 分类: PS文字教程

VC编程中的WM_MOUSEENTER 和 WM_MOUSELEAVE消息

这两个消息比较古怪,虽然你能找到他们的定义,看起来也似乎挺有用,但是却接收不到. 如果要处理这两个消息需要手动在WM_MOUSEMOVE消息处理函数中添加: 添加变量: BOOL m_bTracking; m_bTracking = FALSE; 添加消息处理函数: afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lPara

VC编程中如何设置对话框的背景颜色和静态文本颜色

晚上编一个小程序,涉及到如何设置对话框的背景颜色和静态文本颜色.这在VC6.0中本来是一句话就搞定的事.在应用程序类中的InitInstance()函数添加:     //设置对话框背景和文本颜色 SetDialogBkColor(RGB(160,180,220),RGB(0,0,0));   谁知这在VS 2005上竟不起作用,到网上一查,原来SetDialogBkColor函数在VS 2003中就已经不支持了.只得另辟蹊径.另外的办法就是响应WM_CTLCOLOR消息,在消息映射函数中添加:

vc++编程问题-VC加载SkinPlusPlus后CFileDialog的打开对话框重新选取时自动消失

问题描述 VC加载SkinPlusPlus后CFileDialog的打开对话框重新选取时自动消失 在VC编程中,加载了SkinPlusPlus库后,调用InitializeSkin("SoftCrystal.ssk");初始化窗体皮肤,显示一切正常,但是在用CFileDialog Dlg(TRUE)进行DoModal()后,打开对话框出来了,在对路径进行重新选择(比如点击后退按钮!,比如下拉选择C盘或桌面)时,打开对话框就自动消失了,对此本菜鸟很是头疼,搞了好几天都没有弄出来,希望哪位

vs2012-用VC编程时,鼠标放在菜单上时,怎样直接显示内容

问题描述 用VC编程时,鼠标放在菜单上时,怎样直接显示内容 怎样设置让它直接显示内容呢?每次把鼠标放在菜单上,都是先显示两个向下的括号,等一会才显示菜单内容,真烦. 解决方案 是直接显示菜单 内容呀,不要这样子显示 解决方案二: 是直接显示菜单 内容呀,不要这样子显示 解决方案三: 你可以点一下试试.........

【iOS开发】在界面上显示“HELLO”

大家学习iOS开发,都想有朝一日看到自己的第一个界面程序.本文介绍了在界面上显示"HELLO"的整个开发过程,可供iOS初学者参考. 第一步 打开Xcode开发工具 在MAC电脑的Launchpad中打开Xcode工具,如图1所示. 图1 打开Xcode工具示意图 要新建工程,选择图1中的"Create a new Xcode project". 第二步 创建iOS工程 选择图1中的"Create a new Xcode project"之后,即