2016-02-10 19 views
0
for (int i = 0; i < mYTileCount; i++) { 
      for (int j = 0; j < mXTileCount; j++) { 
       int num = mTileGrid[j][i]; 
       canvas.drawBitmap(Bitmap.createScaledBitmap(mTileArray[num],    mTileSize, mTileSize, false), mXOffset, mYOffset, mPaint); 
       mXOffset+=mTileSize; 
      } 
      mXOffset = 0; 
      mYOffset+=mTileSize; 
     } 

這是用來繪製多個位圖到畫布上,以創建tilemap的代碼的IM,但不是在canvas.drawbitmap事情,我想從他們做出一個大的位圖,而不是如何從代碼中的許多較小的位圖創建一個大的位圖?

回答

0

通過使用支持的畫布一個位圖。創建一個正確大小的新位圖,然後調用新的Canvas(newBitmap)來創建一個繪製到該新位圖的Canvas。然後使用您在該畫布上張貼的代碼。

0

如果所有的位圖都能完美地平鋪到一個矩形區域中,您可以創建一個適合每個較小位圖的所需尺寸的新位圖,然後將每個較小位圖中的像素複製到較大的位圖上偏移。你可以用位圖上的getPixel和setPixel來做到這一點。我不會涉及所有不同的優化策略,但這絕對是一個可行的解決方案,它完全繞過了對Canvas的需求。

+0

我該怎麼做代碼雖然>? –

+0

使用迭代遍歷二維像素數組的「for」循環。它看起來像你的代碼示例,你已經熟悉for循環。 –

相關問題