天天看点

MFC/VC++中的文本输出

文本输出

1:在指定区域输出文本

  1:使用TextOut(int x,int y,const CString& str);方法

  2:使用DrawText(const CString&str,LPRECT lpRect,UINT nFormat)方法在

指定区域绘图

   lRect:区域对象

   nFormat:格式  常用DT_CENTER(水平居中)DT_LEFT(居左)DT_RIGHT

       DT_WORD_ELLIPSIS无法完全显示时,用省略号

示例::

else

{

 CDC *p=GetDC(); //获取设备上下文的指针

 CString s="I am the first";

  CRect rect(20,20,200,100);//设置区域

 p->DrawText(s,rect,DT_CENTER);

  s="自然有其发展规律ooooo";

          rect.DeflateRect(30,0);//减小框度

  rect.OffsetRect(0,80);//矩形向下平移

 p->DrawText(s,rect,DT_LEFT|DT_WORD_ELLIPSIS);

  CDialog::OnPaint();

}

2:设置文本颜色,采用CDC对象的SetTextColor()方法,

           如pDC->SetTextColr(RGB(255,0,0));

3:设置字体

需要创建字体,两种方法

  1:CreateFont(),该方法参数很多,需要参考

  2:CreatePointFont(int nPointSize, LPCTSTR lpszFACEname,CDC *p=NULL)//该方法参数少

   其中 nPointSize表示字体大小,

   lpszFACEname:表示字体名称

   p表示设备上下文的指针,如果是NULL,将以屏幕的设备上下文作为转换依据

4:在通道中输出文本

 主要是CDC类中提供的几个通道函数

BeginPath()打开通道

EndPath()关闭通道

StrokePath()用画笔绘制路径

实例::

else

{

 CPen pen(PS_SOLID,2,RGB(255,0,100));//创建一个画笔

 CDC *p=GetDC();

 p->SelectObject(&pen);  //选中画笔

 p->BeginPath();//打开一个通道

        p->SetBkMode(TRANSPARENT);   //设置相应的模式

 CFont *m=p->SelectObject(&m_font);  //选中创建的字体

 p->TextOut(60,100,"慢而稳,赛必胜");

 p->EndPath(); //关闭通道

 p->StrokePath();//用当前的画笔绘制路径

 pen.DeleteObject();

 p->SelectObject(m);

 CDialog::OnPaint();

}

5在图像背景上输出透明文本

调用CDC的int SetBkMode(int nbBkMode)方法设置设备上下文的背景模式

    nbBkMode=TRANSPARENT表示透明

    nbBkMode=OPAQUE表示已当前的背景颜色填充背景

继续阅读