TextOut 与DrawText

1、CDC::TextOut()在指定位置输出指定字符串。函数原型:

virtual BOOL TextOut(
   int x,
   int y,
   LPCTSTR lpszString,
   int nCount 
);
BOOL TextOut(
   int x,
   int y,
   const CString& str 
);
eg:

CPaintDC dc(this);

dc.TextOut(0, 50,  _T("hello world"));

2、CDC::DrawText()在指定的矩形区域里写入格式化的文本。函数原型:

virtual int DrawText(
   LPCTSTR lpszString,
   int nCount,
   LPRECT lpRect,
   UINT nFormat 
);
int DrawText(
   const CString& str,
   LPRECT lpRect,
   UINT nFormat 
);
最后一个参数指定格式化的方法:

DT_CALCRECT:这个参数比较重要,可以使DrawText函数计算出输出文本的尺寸。如果输出文本有多行,DrawText函数使用lpRect定义的矩形的宽度,并扩展矩形的底部以容纳输出文本的最后一行。如果输出文本只有一行,则DrawText函数改变矩形的右边界,以容纳下正文行的最后一个字符。出现上述任何一种情况,DrawText函数将返回格式化文本的高度,而不是绘制文本。

DT_CENTER:文本水平居中,是从中间向两边输出文本。
DT_LEFT:文本左对齐,是从左向右输出文本。
DT_RIGHT:文本右对齐,是从右向左输出文本。

DT_VCENTER:指定文本垂直居中显示。该标记只在单行文本输出时有效,所以它必须与DT_SINGLELINE结合使用。
DT_SINGLELINE:单行显示文本,使回车和换行符都不断行。
DT_WORDBREAK:当指定参数为DT_WORDBREAK时,DrawText就有了自动识别单词的功能,它会把连在一起的英文字符或数字识了一个单词,当一行显示不下时,它会自动跳转到下一行显示,当单词的长度超过矩形的宽度时,该单词就不能完全显示了。
DT_NOPREFIX:关闭前缀字符。通常DrawText将助记前缀&理解为其后字符加上下划线,前缀&&表示显示一个&字符,指定                            DT_NOPREFIX后关闭了这种处理。
DT_BOTTOM:将正文调整到矩形底部。此值必须和DT_SINGLELINE组合。
DT_EDITCONTROL:复制多行编辑控制的正文显示特性。
eg:
CPaintDC dc(this);
dc.SetBkMode(TRANSPARENT);
CFont fontGrade;
fontGrade.CreatePointFont(100, L"宋体");
dc.SelectObject(&fontGrade);

dc.DrawTextW(_T("hello world"),\
                          &CRect(0,0,100,40), \
                          DT_EDITCONTROL|DT_WORDBREAK|DT_LEFT|DT_NOPREFIX);




  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值