(1)DT_WORDBREAK
只能截断单词。例如如果输入一连串英文字符,那么它会当做一个单词来处理,而不会自动换行。而对于中文字符则可以。如果要对所有字符都可以像Edit控件中那样自动换行,那么可以使用DT_WORDBREAK | DT_EDITCONTROL
DT_EDITCONTROL |
Duplicates the text-displaying
characteristics of a multiline edit control. Specifically, the average
character width is calculated in the same manner as for an edit
control, and the function does not display a partially visible last
line. |
(2)DT_CALRECT的使用
对于一段text,要计算他的显示大小,那么可以使用DT_CALRECT标志。其中的rect参数属于IN/OUT类型。输出时,左上角坐标不
变,右下角坐标改变。函数返回值是文本的高度。当然,它要与不同格式标志一起使用得到的结果是不一样的。例如,DT_CALRECT |
DT_SINGLELINE 时,它只扩展传入rect的width,而在多行显示的时候,即DT_WORDBREAK | DT_WORDBREAK
| DT_EDITCONTROL,仅仅扩展height,width不变。
DT_CALCRECT
Determines the width and height of the rectangle. If there are multiple lines of text, DrawText
will use the width of the rectangle pointed to by lpRect
and extend the base of the rectangle to bound the last line of text. If there is only one line of text, DrawText
will modify the right side of the rectangle so that it bounds the last character in the line. In either case, DrawText
returns the height of the formatted text, but does not draw the text.
(3)DT_CENTER 与 DT_VCENTER
DT_VCENTER只对单行文字的竖直居中有用。DT_CENTER 对单行和多行文字都有用,但只能水平居中。
(4)多行文字的竖直居中
思路:根据显示中心,重新计算要求的显示范围
具体方法:
// ======================================
// = 把str内容显示到客户区的中间,但是每行宽度限定为200,让其自动换行
CRect clientRect;
GetClientRect(clientRect); // 获得客户区范围
CRect rect;
rect.left = rect.top = 0;
rect.right = 200;
rect.bottom = clientRect.bottom;//限定宽度
CString str = "我是来自非洲的姑娘。心中向往神秘的东方,背起行囊寻找梦想,那是龙的故乡
这里的人纯朴善良,淡淡微笑挂脸庞";
CRect temp = rect;
int height = pDC->DrawText(str,temp,DT_CENTER | DT_WORDBREAK | DT_CALCRECT | DT_EDITCONTROL);//获得文本高度
rect.DeflateRect(0,(rect.Height() - height) / 2); // 改变rect
pDC->DrawText(str,rect, DT_CENTER | DT_EDITCONTROL | DT_WORDBREAK);
分享到:
相关推荐
主要为大家详细介绍了android canvas drawText()文字居中效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要给大家介绍了关于Android Canvas的drawText()与文字居中方案的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
主要给大家介绍了关于Android Canvas drawText文字居中的一些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Android DrawText字符串的绘制 Android DrawText字符串的绘制
解决DrawText中文字与字母之间自动换行
graphics 画文字 C# VS2008 DrawText
1. getHeight/2 设置为 drawText 绘制坐标,不能居中 上代码XML: Java代码: package com.denganzhi.cusomerwidget.View; import android.content.Context; import android.graphics.Canvas; import android....
android利用Paint在Canvas上实现竖排写字
10.drawText 多行文本 绝对居中 11.绘制坐标系统,十字线 良好的架构,方便扩展,良好的代码风格和结构,可读性好,绝对原创,很小,整合MFC库才1.7M。 不要嫌分高,对别人辛苦劳动的认可和肯定,而且这个绝对物超所...
Draw a Text in PictureBox by using DrawText API Code
VC++在窗体上输出文本的实例,主要是利用DrawText方法来实现文字输出,为了更全面一些,实例中不但输出了英文字符,还输出了中文,如果您对DrawText的使用方法不熟悉,可下载本源码参考。 运行环境:Windows/Visual...
更多内容见: VC共享乐园vcshare.net 何丹的论坛hedanwang.cn/bbs/
博客《android Graphics( 五):drawText()详解》对应源码
MFC环境下文本输出,包括路径层,DrawText函数使用等
No such filter: 'drawtext' MacOs:node+ffmpeg+web 利用node+ffmpeg 在浏览器上播放rtsp流,所需要的ffmpeg;一般官网上下载的和默认自己编译的都不包含 drawtext filter;该工具包包含,可直接使用 macOs可直接...
利用OPENGL实现三维文字的开发,包括文字的一些特效。
本资源为博主自己编译的,具有drawtext功能的FFmpeg。里面包含的ffmpeg.exe和dll,均具有drawtext功能。功能测试已通过。可在32位和64位系统运行。为根据博文《执行FFmpeg命令时报错:No such filter: 'drawtext'》...