VC美化编程(一)
T_T)
没人看看么....?
------

回复此文章 |
回复主题:VC美化编程(一) ---- 定义字体 | 作者:sunb3 | 军衔:上等兵 | 发表时间:2004-06-08 18:07:41
做了很9[VC]的朋友应该明白了一些对于[MFC]程序中插入文字的操作。

其实简单来说,就是在一个CPP文件中“画”(DRAW)出一个区域,在窗体的X,Y轴上显示出来。但是只是默认字体,难道就没有方法了么?

在MSDN上查找了N多个CFont类,终于发现,可以创建字体。他主要使用了CFont类中一个函数——CreatFont函数。

其大概的参数和格式如下
////////////////////////////////////////////////////////////////////////////////
BOOL CreatFont(int nHeight,int nWidth,int nEscapement,int nOrientaion,int nWeight,BYTE bStrikOut,BYTE nCharSet,BYTE nOutPrecision,BYTE nClipPrecision,BYTE nQuality,BYTE nPitchAndFamily,LPCSTR CpszFacename);
////////////////////////////////////////////////////////////////////////////////



呵呵这下可要考验大家的英语水平了~~~
请看:其中包含了所有文本的可修改内容哦:
长,宽,好,字号,大小,粗体,斜体,下划线……
呵呵~~~对这个一一掌握的话……相信你可以制作一个简单的MFC-OFFICE了
对于该代码的应用,我做了一个简单的例子,希望大家通过仅有的一点提示来举一反三。
创建一个默认的MFC程序,然后在相应的地方加入如下代码(省略号表示的是开发环境自动生成的代码或部分不重要的代码):



////////////////////////////////////////////////////////////////////////////////////
//MFC程序有一个规定,凡是设计者自创的程序,就要在必要的头文件中声明其存在。
//另外要提的一点是:我们插入窗体的字不是一个标签(lable)而是实实在在画(Draw)进去的。
//TestView.h


...
class CTestView:public CView
{
...
protected:
void Fontstr(CDC* pDC,double x,double y,CString font,float nPoi,CString str);
Text_Test(CDC* pDC);
...
}


//接下来是开始“画”我们的文字
//TestView.cpp


void CTestView::Fontstr(CDC* pDC,double x,double y,CString font,float nPoi,CString str)
{
CFont fnBig_01;

//定义一个CFont类的对象

CFont *pOldFont1;

//定义一个CFont类的指针

fnBig_01.CreatFont(-int(nPoi), 0, 0, 0, 400, FLASE, FLASE, 0, GB2312_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_SWISS, font);

//按照默认值创造字体

pOldFont1=pDC->SelectObject(&fnBig_01);

//将设备环境字体转换为创造的字体

pDC->TextOut(int(x), int(y), str);

//输出文本到窗体(即标准显示设备/显示器)

pDC->SelectObject(pOldFont1);

//还原设备环境字体

/////
//接下来是程序的执行部分


void CTestView::OnDraw(CDC* pDC)
{
...
CFont fnBig;
CFont* pOldFont;
fnBig.CreatePointFont(180,"Arial",pDC);
pOldFont=pDC->SelectObject(&fnBig);
pDC->TextOut(20,120,"这个是[阿拉伯]字体");
pDC->SelectObject(pOldFont);
Text_test(pDC);
...
}



///////////////////////////////////////////////////////////////////////////////
//关于Text_test函数的声明(普通的输出)

void CTestView::Text_test(CDC* pDC)
{
CString strList_01;
strList_01=("恢复系统设备环境后的文本[还原]");
Fontstr(pDC,20,220,"GB_2312",32.0f,strList_01+"(楷体)");
}



终于打完了……好累……

总共用时:108分钟……

喝茶先……


hofman   2005-11-19 22:08:10 评论:3   阅读:2027   引用:0
无题 @2012-09-01 13:45:56  
能不能把效果图也发上去。。
无题 @2011-08-05 17:06:04  
不错 有点启发
@2006-04-01 08:02:31  游客
看了一下
对我有用
先谢了

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2004-2010 powered by YuLog