vc增加字体
这是详细说明:渐变字://获得窗口的客户区设备上下文句柄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);//更改当前画笔为空CPen...全部
这是详细说明:渐变字://获得窗口的客户区设备上下文句柄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"); //字体名=@systemCFont *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; //字体磅数=10lf。lfHeight=56; //字体高度(旋转后的字体宽度)=56 lf。lfWidth=20; //字体宽度(旋转后的字体高度)=20lf。
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对象 }。收起