在Android中的内存中向位图添加文本

时间:2011-08-25 02:34:38

标签: android graphics canvas bitmap

我正在尝试从资源中获取位图,向其中添加文本消息并将其返回给方法的调用者。似乎Canvas可能是方法,但下面的代码不起作用。

public Bitmap annotateBmp(String storyId) {
    Bitmap b = BitmapFactory.decodeResource(m_Context.getResources(),     R.drawable.candle_android_pin_512);

    Canvas c = new Canvas(b);
    Paint p = new Paint();

    p.setColor(R.color.red);
    c.drawText("Do you see this?", 30, 210, p);

    return b;   //Why does b not have the text?
}

我错过了一步还是有更好的方法?

1 个答案:

答案 0 :(得分:2)

我尝试了你的代码并在第一行崩溃了。 因为位图是不可变的,所以我必须添加一行来创建一个可变的位图。

b = b.copy(Bitmap.Config.ARGB_8888, true);

然后,你的代码工作正常。你没有指定textSize,但这不是原因。我想可能是文本的原点坐标不在位图中,所以你看不到文字。