【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 ;
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个像素都不差 , 就要考虑到 绘图区域 中 文本区域 的范围 ;
进行精确的计算 ;
相关文章
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案
- 【Android归纳】回调机制在Android中的应用与实战
- Android应用性能优化最佳实践.2.2 性能分析工具
- Android中实现静态的默认安装和卸载应用
- 《Android 应用案例开发大全(第二版)》——1.3节Android开发环境的搭建
- 《Android 应用案例开发大全(第二版)》——2.2节壁纸策划及准备工作
- 《Android 应用案例开发大全(第二版)》——6.7节获取第三方程序中可调用的窗口
- 《Android 应用案例开发大全(第二版)》——6.9节解析数据
- 《Android应用开发入门经典(第3版)》——第1.5节定制应用
- 《Android应用开发入门经典(第3版)》——导读
- 《Android 应用案例开发大全(第3版)》——第1.6节本章小结
- 《Android 应用案例开发大全(第3版)》——第2.7节线程相关类
- 《Android 应用案例开发大全(第3版)》——第2.8节壁纸中的着色器开发
- Android内存解析(一)—从Linux系统内存逐步认识Android应用内存
- Android应用开发之(通过ClipboardManager, ClipData进行复制粘贴)
- Android应用开发中半透明效果实现方案
- Android移动应用界面的模板化设计
- 《OpenGL ES应用开发实践指南:Android卷》—— 1.3 初始化OpenGL
- Android应用开发相关下载资源(2014/12/14更新)
- 移动应用测试框架—AppGrader(Android)
- 如何让Android模拟器能访问到本地Server或Web应用(即:运行模拟器的PC)
- android YUV Sensor配置Camera应用的flash auto菜单
- Android应用自动化测试——理论、工具和实践(上)
- Android应用测试总结