展开全部
这是详细说明:
渐变字:
//获得窗口的客户区设备上下文句柄
CClientDCdc(this);
//更改当前字体
LOGFONTlf;
dc.GetCurrentFont()->GetLogFont(lf);
CFontfont,*pOldFont;
lf.lfCharSet=134;
lf.lfHeight=-150;
lf.lfWidth=0;
strcpy(lf.lfFaceName,"隶书");
font.CreateFontIndirect(lf);
pOldFont=dc.SelectObject(&font);
dc.SetBkMode(TRANSPARENT);
//更改当前画笔为空
CPenpen(PS_NULL,1,RGB(255,0,0)),*pOldPen;
pOldPen=dc.SelectObject(pen);
//更改当前刷子
CBrushbr,*pOldBrush;
pOldBrush=dc.SelectObject(br);
//开始一个路径
dc.BeginPath();
dc.TextOut(10,10,"渐变字");
dc.EndPath();
//绘制渐变效果
dc.SelectClipPath(RGN_COPY);
for(inti=255;i>0;i--)
{
intiRadius=(600*i)/255;
dc.SelectObject(pOldBrush);
br.DeleteObject();
br.CreateSolidBrush(RGB(255,i,0));
dc.SelectObject(br);
dc.Ellipse(-iRadius,-iRadius/3,iRadius,iRadius/3);
}
//恢复设备上下文的原有设置
dc.SelectObject(pOldFont);
dc.SelectObject(pOldPen);
dc.SelectObject(pOldBrush);
空心字:
//获得窗口的客户区设备上下文句柄
CClientDCdc(this);
//更改当前字体
LOGFONTlf;
dc.GetCurrentFont()->GetLogFont(lf);
CFontfont;
CFont*pOldFont;//保存设备上下文最初使用的字体对象
lf.lfCharSet=134;
lf.lfHeight=-150;
lf.lfWidth=0;
strcpy(lf.lfFaceName,"隶书");
font.CreateFontIndirect(lf);
pOldFont=dc.SelectObject(&font);
dc.SetBkMode(TRANSPARENT);
//更改当前画笔
CPenpen(PS_SOLID,1,RGB(255,0,0));
CPen*pOldPen;
pOldPen=dc.SelectObject(pen);
//开始一个路径
dc.BeginPath();
dc.TextOut(10,130,"空心字");
dc.EndPath();
//绘制路径
dc.StrokePath();
//恢复设备上下文的原有设置
dc.SelectObject(pOldFont);
dc.SelectObject(pOldPen);
立体字:在实现3D文字时一般不使用缺省的字体设置,而是通过对字体的设置而使产生的3D文字在视觉上更美观
//获得窗口的客户区设备上下文句柄
CClientDCdc(this);
//定义字体属性
LOGFONTlf;
lf.lfHeight=50;
lf.lfWidth=0;
lf.lfEscapement=0;
lf.lfOrientation=0;
lf.lfWeight=FW_HEAVY;
lf.lfItalic=FALSE;
lf.lfUnderline=FALSE;
lf.lfStrikeOut=FALSE;
lf.lfCharSet=GB2312_CHARSET;
strcpy(lf.lfFaceName,"幼圆");
//创建字体
CFontfont;
font.CreateFontIndirect(lf);
//更改当前字体
CFont*pOldFont=dc.SelectObject(&font);
//绘制字体
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(::GetSysColor(COLOR_3DDKSHADOW));
dc.TextOut(10,10,"立体字");
dc.SetTextColor(::GetSysColor(COLOR_3DHILIGHT));
dc.TextOut(13,7,"立体字");
//恢复设备上下文的原有设置
dc.SelectObject(pOldFont);
旋转字:通过设置字体与X轴的倾斜角度(十分之一度为一个单位)
//获得窗口的客户区设备上下文句柄
CClientDCdc(this);
//定义字体属性
LOGFONTlf;
lf.lfHeight=50;
lf.lfWidth=0;
lf.lfEscapement=300;//倾斜30度,十分之一度为单位
lf.lfOrientation=0;
lf.lfWeight=FW_HEAVY;
竖写汉字的实现方法:
1.建立一个MFC AppWizard(exe)应用工程CHNfont。在MFC AppWizard向导的第一步中选择Single Document,再点击按键Finish->OK完成工程的建立。
2.在CMainFrame::OnCreate函数中添加如下代码,使窗体最大化。AfxGetMainWnd()->ShowWindow(SW_SHOWMAXIMIZED);
3.添加如下代码实现竖写功能。
void CChildView::OnPaint()
{
CPaintDC dc(this);// device context for painting
/////// 利用CFont::CreateFont(...)函数实现竖写汉字////////
CFont myFont; //创建字体对象
//创建逻辑字体
myFont.CreateFont(
56, //字体高度(旋转后的字体宽度)=56
20, //字体宽度(旋转后的字体高度)=20
2700, //字体显示角度=270°
0, //nOrientation=0
10, //字体磅数=10
FALSE, //非斜体
FALSE, //无下划线
FALSE, //无删除线
DEFAULT_CHARSET, //使用缺省字符集
OUT_DEFAULT_PRECIS, //缺省输出精度
CLIP_DEFAULT_PRECIS,//缺省裁减精度
DEFAULT_QUALITY, //nQuality=缺省值
DEFAULT_PITCH, //nPitchAndFamily=缺省值
"@system"); //字体名=@system
CFont *pOldFont=dc.SelectObject(&myFont);//选入设备描述表
CRect rtClient;
GetClientRect(rtClient); //获取客户区尺寸、位置信息
//在客户区适当位置输出文字
dc.TextOut(rtClient.Width()/2+30,rtClient.Height()/8,
"无边落木萧萧下");
dc.SelectObject(pOldFont); //将myFont从设备环境中分离
myFont.DeleteObject(); //删除myFont对象
/////////// 利用LOGFONT结构实现竖写汉字//////////////
LOGFONT lf; //定义字体结构
lf.lfWeight=10; //字体磅数=10
lf.lfHeight=56; //字体高度(旋转后的字体宽度)=56
lf.lfWidth=20; //字体宽度(旋转后的字体高度)=20
lf.lfUnderline=FALSE; //无下划线
lf.lfStrikeOut=FALSE; //无删除线
lf.lfItalic=FALSE; //非斜体
lf.lfEscapement=2700; //字体显示角度=270°
lf.lfCharSet=DEFAULT_CHARSET; //使用缺省字符集
strcpy(lf.lfFaceName,"@system"); //字体名=@system
CFont myLogFont; //定义字体对象
myLogFont.CreateFontIndirect(&lf); //创建逻辑字体
pOldFont=dc.SelectObject(&myLogFont);//选入设备描述表
//在客户区适当位置输出文字
dc.TextOut(rtClient.Width()/2-30,rtClient.Height()/8,
"不尽长江滚滚来");
dc.SelectObject(pOldFont); //将myFont从设备环境中分离
myLogFont.DeleteObject(); //删除myLogFont对象
}
渐变字:
//获得窗口的客户区设备上下文句柄
CClientDCdc(this);
//更改当前字体
LOGFONTlf;
dc.GetCurrentFont()->GetLogFont(lf);
CFontfont,*pOldFont;
lf.lfCharSet=134;
lf.lfHeight=-150;
lf.lfWidth=0;
strcpy(lf.lfFaceName,"隶书");
font.CreateFontIndirect(lf);
pOldFont=dc.SelectObject(&font);
dc.SetBkMode(TRANSPARENT);
//更改当前画笔为空
CPenpen(PS_NULL,1,RGB(255,0,0)),*pOldPen;
pOldPen=dc.SelectObject(pen);
//更改当前刷子
CBrushbr,*pOldBrush;
pOldBrush=dc.SelectObject(br);
//开始一个路径
dc.BeginPath();
dc.TextOut(10,10,"渐变字");
dc.EndPath();
//绘制渐变效果
dc.SelectClipPath(RGN_COPY);
for(inti=255;i>0;i--)
{
intiRadius=(600*i)/255;
dc.SelectObject(pOldBrush);
br.DeleteObject();
br.CreateSolidBrush(RGB(255,i,0));
dc.SelectObject(br);
dc.Ellipse(-iRadius,-iRadius/3,iRadius,iRadius/3);
}
//恢复设备上下文的原有设置
dc.SelectObject(pOldFont);
dc.SelectObject(pOldPen);
dc.SelectObject(pOldBrush);
空心字:
//获得窗口的客户区设备上下文句柄
CClientDCdc(this);
//更改当前字体
LOGFONTlf;
dc.GetCurrentFont()->GetLogFont(lf);
CFontfont;
CFont*pOldFont;//保存设备上下文最初使用的字体对象
lf.lfCharSet=134;
lf.lfHeight=-150;
lf.lfWidth=0;
strcpy(lf.lfFaceName,"隶书");
font.CreateFontIndirect(lf);
pOldFont=dc.SelectObject(&font);
dc.SetBkMode(TRANSPARENT);
//更改当前画笔
CPenpen(PS_SOLID,1,RGB(255,0,0));
CPen*pOldPen;
pOldPen=dc.SelectObject(pen);
//开始一个路径
dc.BeginPath();
dc.TextOut(10,130,"空心字");
dc.EndPath();
//绘制路径
dc.StrokePath();
//恢复设备上下文的原有设置
dc.SelectObject(pOldFont);
dc.SelectObject(pOldPen);
立体字:在实现3D文字时一般不使用缺省的字体设置,而是通过对字体的设置而使产生的3D文字在视觉上更美观
//获得窗口的客户区设备上下文句柄
CClientDCdc(this);
//定义字体属性
LOGFONTlf;
lf.lfHeight=50;
lf.lfWidth=0;
lf.lfEscapement=0;
lf.lfOrientation=0;
lf.lfWeight=FW_HEAVY;
lf.lfItalic=FALSE;
lf.lfUnderline=FALSE;
lf.lfStrikeOut=FALSE;
lf.lfCharSet=GB2312_CHARSET;
strcpy(lf.lfFaceName,"幼圆");
//创建字体
CFontfont;
font.CreateFontIndirect(lf);
//更改当前字体
CFont*pOldFont=dc.SelectObject(&font);
//绘制字体
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(::GetSysColor(COLOR_3DDKSHADOW));
dc.TextOut(10,10,"立体字");
dc.SetTextColor(::GetSysColor(COLOR_3DHILIGHT));
dc.TextOut(13,7,"立体字");
//恢复设备上下文的原有设置
dc.SelectObject(pOldFont);
旋转字:通过设置字体与X轴的倾斜角度(十分之一度为一个单位)
//获得窗口的客户区设备上下文句柄
CClientDCdc(this);
//定义字体属性
LOGFONTlf;
lf.lfHeight=50;
lf.lfWidth=0;
lf.lfEscapement=300;//倾斜30度,十分之一度为单位
lf.lfOrientation=0;
lf.lfWeight=FW_HEAVY;
竖写汉字的实现方法:
1.建立一个MFC AppWizard(exe)应用工程CHNfont。在MFC AppWizard向导的第一步中选择Single Document,再点击按键Finish->OK完成工程的建立。
2.在CMainFrame::OnCreate函数中添加如下代码,使窗体最大化。AfxGetMainWnd()->ShowWindow(SW_SHOWMAXIMIZED);
3.添加如下代码实现竖写功能。
void CChildView::OnPaint()
{
CPaintDC dc(this);// device context for painting
/////// 利用CFont::CreateFont(...)函数实现竖写汉字////////
CFont myFont; //创建字体对象
//创建逻辑字体
myFont.CreateFont(
56, //字体高度(旋转后的字体宽度)=56
20, //字体宽度(旋转后的字体高度)=20
2700, //字体显示角度=270°
0, //nOrientation=0
10, //字体磅数=10
FALSE, //非斜体
FALSE, //无下划线
FALSE, //无删除线
DEFAULT_CHARSET, //使用缺省字符集
OUT_DEFAULT_PRECIS, //缺省输出精度
CLIP_DEFAULT_PRECIS,//缺省裁减精度
DEFAULT_QUALITY, //nQuality=缺省值
DEFAULT_PITCH, //nPitchAndFamily=缺省值
"@system"); //字体名=@system
CFont *pOldFont=dc.SelectObject(&myFont);//选入设备描述表
CRect rtClient;
GetClientRect(rtClient); //获取客户区尺寸、位置信息
//在客户区适当位置输出文字
dc.TextOut(rtClient.Width()/2+30,rtClient.Height()/8,
"无边落木萧萧下");
dc.SelectObject(pOldFont); //将myFont从设备环境中分离
myFont.DeleteObject(); //删除myFont对象
/////////// 利用LOGFONT结构实现竖写汉字//////////////
LOGFONT lf; //定义字体结构
lf.lfWeight=10; //字体磅数=10
lf.lfHeight=56; //字体高度(旋转后的字体宽度)=56
lf.lfWidth=20; //字体宽度(旋转后的字体高度)=20
lf.lfUnderline=FALSE; //无下划线
lf.lfStrikeOut=FALSE; //无删除线
lf.lfItalic=FALSE; //非斜体
lf.lfEscapement=2700; //字体显示角度=270°
lf.lfCharSet=DEFAULT_CHARSET; //使用缺省字符集
strcpy(lf.lfFaceName,"@system"); //字体名=@system
CFont myLogFont; //定义字体对象
myLogFont.CreateFontIndirect(&lf); //创建逻辑字体
pOldFont=dc.SelectObject(&myLogFont);//选入设备描述表
//在客户区适当位置输出文字
dc.TextOut(rtClient.Width()/2-30,rtClient.Height()/8,
"不尽长江滚滚来");
dc.SelectObject(pOldFont); //将myFont从设备环境中分离
myLogFont.DeleteObject(); //删除myLogFont对象
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询