码迷,mamicode.com
首页 > 其他好文 > 详细

text字体高度的探究

时间:2015-08-09 00:28:57      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:string   字体   高度   font   

最近学习自定义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,玩会游戏,睡觉了,就这样吧

版权声明:本文为博主原创文章,未经博主允许不得转载。

text字体高度的探究

标签:string   字体   高度   font   

原文地址:http://blog.csdn.net/u011625768/article/details/47363871

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!