2011-02-14 27 views
2

我正在處理一段代碼,我必須在位圖上寫入文本和圖像。不幸的是我不知道要在位圖中添加的文本項的數量。首先,我通過這個在android中伸展的位圖

Bitmap bitMapBuffer = Bitmap.createBitmap(containerWidth,50, Bitmap.Config.ARGB_8888); 

問題創建位圖是..上面的位圖是固定大小..所以無論之後我寫了一個沒有位圖顯示。我如何使它工作,我的意思是一種拉伸位圖類型。我看着BitmapDrawable,但我不能被拉伸傳遞到畫布這樣

Canvas c1 = new Canvas(bitMapBuffer); 

我該怎麼處理這種情況?

+0

您可以將位圖傳遞給畫布。你在那裏有兩行代碼沒有錯。你的問題在別處。 – user432209 2011-02-15 00:47:35

+0

是的。上面的代碼行工作...問題是位圖的初始大小。由於文本的數量是未知的,具有固定的初始大小將不起作用。下面給出的答案確實解決了這個問題。但我只是想知道是否有更好的方法來做到這一點。 – prashant 2011-02-15 02:52:52

回答

0

您需要跟蹤您需要的位圖有多大。當您需要添加另一段文本時,這會使您超過當前位圖的限制,您需要創建一個新的文本。下面是僞代碼爲做到這一點的一種方法:

Bitmap buffer = Bitmap.createBitmap(containerWidth, 50, Bitmap.Config.ARGB_8888); 
Canvas c = new Canvas(buffer); 
// ... 
while (more_text_to_add()) { 
    if (bitmap_too_small()) { 
     Bitmap old = buffer; 
     buffer = Bitmmap.createBitmap(buffer.getWidth(), 
      buffer.getHeight + delta, Bitmap.Config.ARGB_8888); 
     c = new Canvas(buffer); 
     c.drawBitmap(old, 0, 0, null); 
    } 
    draw_more_text(); 
} 

在這段代碼,delta是您要添加的高度爲位圖。

0

您是否考慮過NinePatch?