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

高级UI汇总​​​​​​​
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值