获取渲染文本高度,使用paint.measureText等效于渲染文本宽度

时间:2012-01-30 09:30:20

标签: android

我有以下代码来绘制文字。

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Paint paint = new Paint();
    paint.setTextSize(400);
    paint.setColor(Color.WHITE);
    paint.setAntiAlias(true);
    paint.setTextAlign(Align.LEFT);
    paint.setStyle(Style.FILL);
    String text = "698";
    Rect bounds = new Rect();
    paint.getTextBounds(text, 0, text.length(), bounds);

    int textWidth = bounds.width();        
    int textHeight = bounds.height();

    Bitmap originalBitmap = Bitmap.createBitmap(textWidth,
            textHeight, Bitmap.Config.ARGB_8888);
    Canvas singleUseCanvas = new Canvas(originalBitmap); 
    singleUseCanvas.drawColor(Color.BLUE);
    singleUseCanvas.drawText(text, 0, textHeight, paint);
    canvas.drawBitmap(originalBitmap, 0, 0, null);
}

我得到了不受欢迎的结果,其右侧和底部都被裁剪掉了。

enter image description here

我使用

避免右侧裁剪
float textWidth = paint.measureText(text);
Bitmap originalBitmap = Bitmap.createBitmap((int)(textWidth + 0.5),
                textHeight, Bitmap.Config.ARGB_8888);

我得到了以下改进

enter image description here

然而。我的底部还在被裁剪。我可以知道获取渲染文本高度的正确方法是什么,这类似于使用paint.measureText渲染的文本宽度?

1 个答案:

答案 0 :(得分:0)

我想我看看这篇文章会有所帮助: Android Paint: .measureText() vs .getTextBounds() 它有一个很好的调查,关于渲染文本的大小和文本高度,这是你的关注。