0

我想在我的标记图像前绘制文本。但是文本超出了图像的边界。我可以自动调整文本吗?如果是,那么请务实地给我一个例子。我正在使用以下代码来绘制文本。

    paint.setTextSize((int) (11 * scale));
    // text shadow
    paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);

    // draw text to the Canvas center
    Rect bounds = new Rect();
    paint.setTextAlign(Align.CENTER);

    paint.getTextBounds(gText, 0, gText.length(), bounds);

        int x=20;
        int y=15;
    canvas.drawText(gText, x * scale, y * scale, paint);

它显示以下输出

在此处输入图像描述

如何调整文字?

4

1 回答 1

0
private TextPaint mTp;
private String mText;
private final static float TEXT_SIZE = 30;
private void drawingSettings()
{
mTp = new TextPaint(Paint.ANTI_ALIAS_FLAG);
mTp.setStyle(Paint.Style.FILL);
mTp.setColor(0xFFCCCCCC);
mTp.setTextSize(TEXT_HEIGHT);

mText = "some text"
}

@Override
public void onDraw(Canvas canvas)
{
 int bmpWidth = mBitmap.getWidth();
 int textWidth = mTp.mesureText(mText);

 float textSize = TEXT_SIZE;

 while(mTp.mesureText(text)>bmpWidth)
 {
   textSize-1;
   mTp.setTextSize(textSize);
 }
 float xPos = 0;
 float yPos = 0;
 canvas.drawText(mText,xPos,yPos,mTp);
}

请注意,在优化时,您应该考虑将文本大小计算移到 onDraw 函数之外。

于 2013-08-26T08:28:31.500 回答