SeniorUI0303_Paint基本使用三(FontMetrics文字对齐)

SeniorUI03_Paint及paint使用实例总结

一、概念:

文字的显示有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

猜你喜欢

转载自blog.csdn.net/baopengjian/article/details/80418235