2011-08-25 48 views
2

我試圖從資源中取一個位圖,向它添加一條文本消息並將其返回給方法的調用者。它看起來像帆布可能是該方法,但下面的代碼不起作用。將文本添加到Android中的內存位圖

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? 
} 

我是否錯過了一個步驟或是否有更好的方法?

+0

在draw()@override方法中執行canvas.drawText()。試過了嗎? –

回答

2

我試過你的代碼並在第一行崩潰了。由於位圖是不可變的,因此我必須添加一行來創建可變位圖。

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

然後,你的代碼工作正常。你不指定textSize,但這不是原因。我想可能是文字的原點座標超出了位圖,所以你看不到文字。

+0

謝謝faylon!那就是訣竅。在我工作的環境中,我有一個可變的字體,但是默認的字體太小了,不容易看到! –