文本输出
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表示已当前的背景颜色填充背景