【Android 应用开发】Canvas 精准绘制文字 ( 文本边界坐标解析 | 绘图位置 )

举报
韩曙亮 发表于 2022/01/11 02:00:44 2022/01/11
【摘要】 文章目录 一、文本边界坐标解析二、绘图位置 一、文本边界坐标解析 在上一篇博客 【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将...





一、文本边界坐标解析



在上一篇博客 【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 ) 中 , 简要介绍了 Paint.getTextBounds() 函数获取的 Rect 边界 , 今天补充下精准的绘图信息 ;

Rect 中获取的坐标值示例 : left = 4 , top = -31 , right = 28 , bottom = 0 ;

上述坐标是相对于 下图中的 (0, 0) 原点坐标系的值 ;

下图中的原点位置 , 就是调用 Canvas 的 drawText 方法 , 传入的 x 值和 基线值 ;

下图中的 绿色矩形框是 Canvas 的绘图区域 , 橙色矩形框是 Canvas 绘制的文本的实际区域 ;

绘图区域 包含 文本实际占用区域 ;


上述的坐标值 , 是在如下坐标系的值 ;

left = 4 , top = -31 , right = 28 , bottom = 0 ; 

  
 
  • 1

left 值是 绘图区域 最左侧 距离 文本实际区域 的左侧这段空隙的宽度 ;

right 值是 绘图区域 最左侧 距离 文本实际区域 的右侧这段空隙的宽度 ;

可以得到 文本区域 的中心值 , 距离 绘图区域 的值为 l e f t + r i g h t 2 \rm \cfrac{left + right}{2} 2left+right ;


top 值是 基线值 - 基线距离文本顶部的值 , 基线值是 0 , 一般都是负数 , 这里是 -31 ;

botttom 值是 基线距离文本底部值 - 基线值 , 基线值是 0 , 正数 , 负数 , 0 都有可能 , 这里是 0 ; 一般是正数或 0 , 负数不常见 ;

在这里插入图片描述





二、绘图位置



使用 Canvas 的 drawText 方法绘制文字 , 传入 ( x , y ) 坐标 , x 是绘制区域的左侧 , y 是文本基线 , 绘制的位置如下 :

在这里插入图片描述

如果不是要求很精确的话 , 一定程度上可以理解为 传入的值 左下角的位置 ;


如果要精准到像素级别 , 保证1个像素都不差 , 就要考虑到 绘图区域 中 文本区域 的范围 ;

进行精确的计算 ;

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/121408115

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。