VC文本折行输出,计算行数。
来源:互联网 发布:创想软件技术有限公司 编辑:程序博客网 时间:2024/04/29 10:30
很多时候需要文本折行输出,我所使用的文本折行有两种方式:
1.使用DrawText,传入属性DT_CALCRECT,DrawText可以返回文本的高度,具体用法为:
int textHeight = pDC->DrawText(strText, -1, rcDraw,DT_CALCRECT | DT_WORDBREAK | DT_EDITCONTROL| DT_NOPREFIX | DT_EXTERNALLEADING);
textheight就是多行文本的高度,drawtext会自动计算rcdraw的rect区域。但是,我在使用过程中发现,使用drawtext,函数返回的文本高度优势并不准确,可能会有误差,结果造成文本的丢失,所以为了准确,我一般会使用下面一种方式。
2.使用TEXTMETRIC获得当前所选字体尺寸。
int GetTextHeight( CString strText){ CDC* pDC = GetDC(); CFont* pFont = &m_Font; CFont*poldFont = pDC->SelectObject(pFont); int leftmargin = 0,rightmargin = 10; //已知左右边界。 TEXTMETRIC tmtext; pDC->GetTextMetrics(&tmtext); int charY = tmtext.tmHeight,charX = tmtext.tmAveCharWidth; int line = 1; //行数初始化为1 CSize sizetext(0,0); for (int i =0; i< strText.GetLength();i++) { sizetext.cx += charX; if (sizetext.cx + leftmargin > rightmargin) { line++; sizetext.cx = 0; } } pDC->SelectObject(poldFont); return line * charY; //行数乘单行高度。}
获得行数和文本宽度后,可以使用drawtext或textout输出文本。
使用textout输出文本。
void DrawText(CString strtext,CDC dc){ TEXTMETRIC tm; dc.GetTextMetrics(&tm); int charX = tm.tmAveCharWidth; int chayY = tm.tmHeight; CSize sizetext(0,0); int charNum = 0; CRect rcText(lpDrawItemStruct->rcItem ); CString strDraw = strText; for (int i =0; i< strText.GetLength();i++) { sizetext.cx += charX; if (sizetext.cx + rcText.left > rcText.right) { sizetext.cx = 0; dc.TextOut(rcText.left, rcText.top,strDraw,charNum); strDraw = strDraw.Mid(charNum,strDraw.GetLength()-charNum); rcText.top += chayY; charNum = 0; } charNum++; } dc.TextOut(rcText.left, rcText.top,strDraw);}
0 0
- VC文本折行输出,计算行数。
- MFC/VC++中的文本输出
- 使用shell 统计文本行数,输出两个文件不同或相同的行
- 统计python脚本中 shell命令输出文本的行数
- 计算文本单词数、行数,并创建一维数组
- vc 计算文本框CEdit内数据的行数
- VC输出文本信息到调试器
- iOS 计算富文本,检索网址,号码,表情,并且计算高度,设置最大行数
- 输出文本指定行
- iOS 计算富文本,检索网址,号码,表情,并且计算高度,设置最大行数(聊天表情计算)
- 统计文本的行数
- Python 统计文本行数
- cocos2dx 读取文本行数
- css限制文本行数
- 文本溢出行数属性
- css 控制文本行数
- 限制文本行数
- txt文本行数计算;转为二维数组;二维数组写为txt内容
- 接纳不完美的自己
- UIView的layoutSubviews和drawRect方法何时调用
- mybatis batch insert
- B. Semifinals
- 2010-07-02 11:47 关于C3P0容错和自动重连特性的研究
- VC文本折行输出,计算行数。
- 多线程的那点儿事(之多核编程)
- WEB架构师成长之路之三-架构师都要懂哪些知识
- Struts2教程1:第一个Struts2程序
- 升级Struts,从2.1.8到2.3.16.1,过程实录
- IPV6基本知识
- 用cycript钩住支付宝进程的一些操作
- 【转】tmux使用
- SOAP接口相关知识介绍