(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);

转载于:https://www.cnblogs.com/carekee/articles/2383898.html

DrawText如何使多行文字居中相关推荐

  1. css如何实现让div中的多行文字居中显示

    标题css如何实现让div中的多行文字居中显示 最近在做项目的时候遇到一个div中有多行文字(可能一行也可能多行)需要实现居中显示,试了好多方法都不行,显然不能使用padding来居中,因为文字有多少 ...

  2. div+css使多行文字垂直居中?

    1.单行文字: 设置height = line-height; 多行文字: 设置 padding, 自己要计算一下? vertical-align: 可以设置垂直居中, 但是只是针对本身就具有 ali ...

  3. css中如何使一段文字居中的同时超出换行的部分不居中

    先看图 红框的部分是已经实现的步骤 .elastic-title {padding: 40rpx 0;text-align: center;p {width: 384rpx;margin: 0 aut ...

  4. web前端字体居中_css怎样使文字居中?

    在CSS中,可以使用text-align属性来使文字水平居中:使用line-height属性来使单行文字垂直居中.使用vertical-align:middle +display:table-cell ...

  5. 单行文字垂直居中,多行文字垂直居中

    这里通过下面一个实例来讲一下单行文字居中和多行文字居中的方法: 一.单行文字居中 原理: 使用height 和 line-height,相等的原理. 二.多行文字居中 原理: 将多行文字当做一张图片去 ...

  6. android text字体居中显示,Android Canvas的drawText()和文字居中方案

    自定义View是绘制文本有三类方法 // 第一类 public void drawText (String text, float x, float y, Paint paint) public vo ...

  7. Android Canvas的drawText()和文字居中方案

    自定义View是绘制文本有三类方法: // 第一类 public void drawText (String text, float x, float y, Paint paint) public v ...

  8. css 多行文字左对齐,纯CSS实现文字一行居中,多行左对齐的方法

    其实这种需求还是蛮常见的,主要用于产品列表页面,用于产品图片下面,显示产品的名称. 想要实现的效果为: 未知文字长度,当文字长度小于盒子宽度,也就是一行时,文字居中. 当文字长度大于盒子的宽度,会自动 ...

  9. android canvas添加文字居中,android Canvas drawText 文字居中

    1首先利用canvas获取画布的宽高, //获取屏幕的宽和高 int width = canvas.getWidth(); int height = canvas.getHeight(); 2获取文字 ...

  10. 前端——CSS如何使文字居中

    最近在制作网页的时候,经常需要用到添加文本.但大部分文本都需要调整到需要的位置.调整文本的位置,可以通过margin来设置外边距的方法来调整.而使文本居中,则一般有以下三种方法. text-align ...

最新文章

  1. 【Python】利用 Python 实现多任务进程
  2. 初学者指南:服务器基本技术名词
  3. 项目中最困难的部分_微服务最难的部分是什么? 您的资料
  4. 基于ADS的c语言程序设计实验,实验一:基于ADS软件传输线理论仿真设计与分析.docx...
  5. 11-8 热点key的重建优化
  6. 远程桌面发生身份验证错误,要求的函数不受支持
  7. 一个小型的中文文本分类系统(项目链接文末)——《ML算法原理和实践》学习笔记
  8. 贪吃蛇程序设计报告python_贪吃蛇程序设计报告
  9. bim管线插件:教你平面显示家用冷热水和卫生设备管道
  10. Chrome浏览器书签同步配置方法
  11. 【wangeditor富文本编辑器v4版自定义功能】格式刷
  12. Vmware中Server配置静态IP地址
  13. 中国首款前装L3自动驾驶卡车发布:一汽解放制造,京东车队运营
  14. matlab R2013a 生成exe 脱离matlab开发环境运行
  15. NoSQL与MongoDB简介
  16. 【C】C语言中的设计模式
  17. Android App 手机兼容平板横竖屏切换
  18. 基于MATLAB Simulink的中性点钳位三电平逆变器仿真模型
  19. 如何在3个月内写出博士论文
  20. VMware Pro v14.1.1 官方版本及激活密钥(转载)

热门文章

  1. 增强for中操作集合元素的误区---java.util.ConcurrentModificationException
  2. CentOS7安装Portainer实现docker可视化操作
  3. 二叉树中获取从根节点到某个节点的路径
  4. maven私服搭建:docker安装Sonatype Nexus以及寻找admin用户对应的随机初始密码
  5. JAVAWeb项目 微型商城项目-------(五)用户登录实现
  6. 每天一道剑指offer-对称的二叉树
  7. 小学计算机课教案多变的刷子,信息技术《多变的刷子工具》教学设计.doc
  8. liunx上mysql源码安装mysql_搞定linux上MySQL编程(一):linux上源码安装MySQL
  9. spring boot配置ip_Zookeeper作为配置中心使用说明
  10. EasyUI:datagrid重置排序按钮状态