SeniorUI0303_Paint基本使用三(FontMetrics文字对齐)
一、概念:
文字的显示有6条基准线(top、ascent、center、baseline、bottom)
二、问题:
通常在画文字,或者摆放布局时会发现字的位置和我们希望其所在的位置有些微不同?
因为画文字时是以字的左上角或右下角为基准的(top、bottom),但通常文字内容显示时是以(baseline)为基准的。为了解决这个问题,简单的效果可以设置Center,复杂的时,需要计算baseline到center的距离,从而得出坐标
三、示意图:
四、获取相关参数的API:
Paint.FontMetrics
Paint.FontMetricsInt
里面有top,ascent,desent, bottom, baseline这几个属性
五、相应关系:
top = top线的y坐标 - baseline线的y坐标
bottom = bottom线的y坐标 - baseline线的y坐标
ascent = ascent线的y坐标 - baseline线的y坐标
desent = desent线的y坐标 - baseline线的y坐标
六、计算baseline:
第一步: A = B = (bottom - top)/2
bottom = baseline + FontMetrics.bottom
top = baseline + FontMetrics.top
—> A = B = (FontMetrics.bottom - FontMetrics.top)/ 2
第二步: C = B - (bottom - baseline)
= B - FontMetrics.bottom
第三步: C = baseline - center
综上可得:
baseline - center = (FontMetrics.bottom - FontMetrics.top)/2 - FontMetrics.bottom
baseline = center +(FontMetrics.bottom - FontMetrics.top)/2 - FontMetrics.bottom