工控编程吧
标题:
实现文字投影光晕效果--上位机VC
[打印本页]
作者:
qq263946146
时间:
2016-9-8 14:04
标题:
实现文字投影光晕效果--上位机VC
(, 下载次数: 0)
上传
点击文件名下载附件
实现文字投影光晕效果--上位机VC
功能展示
有时,程序界面上部分文字需要点缀效果,如光晕,投影,我们当前例程就实现这一功能,效果如图.点击<展示效果>就会显示指定文字的效果,文字颜色及光晕颜色可以通过例程按钮中变量 intFontColor = 255;int ShadowColor=0;进行设置
要点提示
例程是基于GDI+实现文字光晕或投影效果,在VC6.0中使用GDI+得手动初始化其环境,在更高版本则不用
GDI+使用前分三步初始化
1.在stdafx.h 中包含头文件
//使用GDI+第一步
#define UNICODE
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#endif
#include "Include\\gdiplus.h"
using namespace Gdiplus;
#pragma comment(lib, "Include\\gdiplus.lib")
2.程序初始化是初始化GDI+环境
//GDI+第二步
ULONG_PTR diplusToken;
GdiplusStartupInputgdiplusStartupInput;
GdiplusStartup(&diplusToken,&gdiplusStartupInput, NULL);
在程序退出时 关闭环境
//GDI+第三步
GdiplusShutdown(diplusToken);
实现功能
1.新建基于对话框的应用程序
2.复制例程根目录GDI+文件夹Include,并分三步初始化GDI+
//使用GDI+第一步
#define UNICODE
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#endif
#include "Include\\gdiplus.h"
using namespace Gdiplus;
#pragma comment(lib, "Include\\gdiplus.lib")
//GDI+第二步
ULONG_PTR diplusToken;
GdiplusStartupInputgdiplusStartupInput;
GdiplusStartup(&diplusToken,&gdiplusStartupInput, NULL);
//GDI+第三步
GdiplusShutdown(diplusToken);
3,添加自定义函数void Project (Graphics &g, int Fuzzy, Rect rectPaint, LPCWSTRText, Rect Textrect, Font &TextFont, int FontColor, int ShadowColor)用于实现光晕或投影效果;
G为显示文字的设备上下文件, Fuzzy为投影或光晕大小, rectPaint为绘制在矩形, Text为要显示的文字 ,TextFont为文字的字体格式,FontColor为文字 的颜色,ShadowColor为背景颜色;
4.添加一按钮关联点击函数用于调用上面函数,实现效果
void CMy123Dlg::OnButton1()
{
LOGFONTW lfont;
memset( &lfont, 0, sizeof(lfont) );
lfont.lfHeight = -130, // nHeight 注意使用负值,表示character height, 正值表示 cell height
lfont.lfWidth = 0, // nWidth
//0, // nEscapement
//0, // nOrientation
lfont.lfWeight = FW_NORMAL, //nWeight
lfont.lfItalic = FALSE, //bItalic
lfont.lfUnderline = FALSE, // bUnderline
lfont.lfStrikeOut = 0, // cStrikeOut
lfont.lfCharSet = DEFAULT_CHARSET, // nCharSet
lfont.lfOutPrecision = OUT_DEFAULT_PRECIS,// nOutPrecision
lfont.lfClipPrecision = CLIP_DEFAULT_PRECIS, // nClipPrecision
lfont.lfQuality = DEFAULT_QUALITY, // nQuality
lfont.lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS,// nPitchAndFamily
wcscpy( lfont.lfFaceName, (L"微软雅黑") ); // lpszFacename
CDC *pDC = GetDC();
Graphics g(pDC->m_hDC);
int Fuzzy =30;
CString strFileName="微软雅黑";
LPCWSTR Text = strFileName.AllocSysString();
Rect Textrect(12,12,555,655);
Rect rectPaint(Textrect);
rectPaint.Inflate(40,40);
Font TextFont(pDC->m_hDC, &lfont );
int FontColor = 255;
int ShadowColor=0;
Project(g, Fuzzy, rectPaint, Text, Textrect, TextFont, FontColor, ShadowColor);
ReleaseDC(pDC);
}
复制代码
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/39dc6663481b94d3ddd7bafc7ce69068/0/0/w_19rssv0cop.swf-albumId=6337153109-tvId=6337153109-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 12)
上传
点击文件名下载附件
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4