我想從多個較小的位圖合成背景位圖。我正在使用Eclipse和Android SDK。Android:在另一個位圖上繪製多個位圖
我已加載了(大部分)空白背景位圖(像素尺寸爲480),如下所示:
Bitmap mBackground = BitmapFactory.decodeResource(res, R.drawable.background);
然後我加載一個位圖「瓦片」(128×128)的方式相同。
我已經嘗試了多種方式將圖塊繪製到位圖上,但每種方法都不會按照我希望的方式工作。我想繪製縮放到64x64的瓦片位圖和背景位圖上的特定位置(像素偏移量)。
1)用帆布...
Canvas c = new Canvas(mBackground);
c.drawBitmap(mTile, null, new Rect(10, 10, 73, 73), null);
由此得出磚太大了(沒有原圖,沒有64×64,但在兩者之間,原來的約66%)的地方
2)使用可繪製(這基本上似乎是相同的):
Canvas c = new Canvas(mBackground);
c.translate(10, 10);
d.setBounds(0, 0, 63, 63);
d.draw(c);
相同的結果,實驗#1 ...
該文檔在許多地方提到(沒有簡明扼要的解釋在任何地方),這與設備無關的「密度」有關,因此我嘗試了下一種方法...
3)使用固定比例資源。我創建了/ res/drawable-nodpi(我也嘗試過/ res/drawable)文件夾,並將其資源(背景和拼貼png圖像)移入其中。當從背景位圖創建畫布時會導致異常,因爲非標度位圖顯然變得不可變,因此無法分配給畫布!
4)我嘗試使用BitmapFactory.Options並將inScaled設置爲false,並將這些選項傳遞給背景和拼貼的兩個decodeResource調用。這與#3具有完全相同的效果(拋出異常)。
沒有任何工作,它變得非常沮喪。我相信我只是錯過了一些位圖特有的細節,當涉及到不同的座標空間時,但我無法在文檔或其他地方的任何地方找到它(我嘗試過多個android開發網站無濟於事)。
希望有人這樣做會看到這個請求! 謝謝,傑森
爲什麼你不使用位圖。createScaledBitmap()用於將「tile」從128x128縮放到64x64? – Zelimir 2011-02-11 16:35:23
基本上,在嘗試了幾次實驗後,似乎不可能使用合成。如果我單獨加載所有拼貼,並立即編寫位圖(即將所有內容全部繪製到空白畫布上),則工作得很好,因爲座標空間都匹配。 – 2011-02-19 00:37:42