1. 程式人生 > >自定義控制元件中draw()方法基線的計算

自定義控制元件中draw()方法基線的計算

Canvas.drawText(String text, float x, float y,Paint paint)方法
第一個引數 text 是需要繪製的文字
第二個引數 x 是文字開始的位置
第三個引數 y 是基線的位置
第四個引數 paint 傳畫筆

其中第三個引數基線的位置計算方法
在這裡插入圖片描述

fontMetricsInt.top是從文字的基線開始到文字頂部的距離,是一個負值
fontMetricsInt.bottom是從文字的基線開始到文字底部的距離,是一個正值

所以基線的位置應該為:
基線到文字中點的距離 = (文字頂部到基線的距離 - 文字到基線的底部距離) / 2 - 文字到基線頂部的距離;
基線位置y = 文字高度的一半h + 基線到文字中點的距離;

程式碼如下:

Paint.FontMetricsInt fontMetricsInt = mPaint.getFontMetricsInt();
int dy = (fontMetricsInt.top - fontMetricsInt.bottom) / 2 - fontMetricsInt.top;
// 基線 y 的位置
int baseLine = getHeight()/2 + dy;