您的位置:首页 > 其它

text字体高度的探究

2015-08-08 23:08 246 查看
最近学习自定义view,突然感觉对Paint.drawText(String text,int x,int y,Paint paint)的参数自己根本不理解,于是就探究一下吧,这一探究 ,出事了~

第一个参数不说了,需要绘制的字符串,第二个参数自己测试了一下,应该是开始绘制的x坐标,第三个参数那么应该就是绘制开始的y坐标了(字符串的下方),第四个参数画笔,没啥可说的。但是绘制出来之后完全不是那个样子啊?

盗用一张图:嘿嘿,自己懒得截图了



发现没有?外面的蓝色矩形跟字符串,切的好齐整啊好齐整 ,百度了一下现在的矩形的底边就是我们字符的baseline了。。

在盗用一张图:



这里主要介绍的是 FontMetrics(英文的意思是:根据,我的理解是字符图样)

Paint.getFontMetrics 里面的几个方法

ascent英文的意思是:提升 ,字符的上方到baseline的距离,比较好理解

descent 英文的意思是:下降 ,字符的下方到baseline 的距离

top :ascent 的最大值

bottom :descent的最大值

这里 我们可以看出 找个字符的高度是: descent - ascent 这个求字符高度的方法 比较靠谱:

我们一般是:Math.ceil( descent - ascent) 向上取整数 获得字符的高度。

那么根据上面的描述:

如果我想绘制字符 到矩形 垂直居中的话:

Paint.drawText(String text,int x,int y,Paint paint)的参数 应该是这样的

(字符串,(矩形的宽度-字符串的长度)/2,矩形的高度(baseline)/2+字符串的高度/2-字符到baseline的距离(descent),画笔);

换算成公式的话应该是:假设字符串所在的矩形为rect ,则:

(rect.bottom-rect.top)/2+(descent - ascent)/2-descent=

(rect.bottom-rect.top)/2-(descent + ascent)/2,玩会游戏,睡觉了,就这样吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: