2010-11-12 160 views
1

我試圖「移位」一個位圖,但未成功。通過「移位」,我的意思是:如果我有一個500x300並將其右移50個像素,則結果應該是500x300位圖,其中每個像素向左移動50個像素,並且最右側50個像素爲空。所以,除了左側被裁剪之外,新圖像與舊圖像相同,並且右側附加了空白區域。下面的代碼成功作物左側,但它並沒有在右邊產生的空白區域,它只是產生一個窄位:在Android中,如何移動位圖?

Bitmap newBitmap = Bitmap.createBitmap(oldBitmap.getWidth(), m_CurrentBitmap.getHeight(), Config.ARGB_8888); 
newBitmap = Bitmap.createBitmap(oldBitmap.getWidth(), deltaX, 0, oldBitmap.getWidth() - deltaX, oldBitmap.getHeight()); 

於是我嘗試創建具有所需尺寸的新位圖,以及手動設置像素(帶有偏移量)。然而,這仍然會產生一個較窄的位圖,缺乏右側的空白區域:

Bitmap newBitmap = Bitmap.createBitmap(oldBitmap.getWidth(), oldBitmap.getHeight(), Config.ARGB_8888); 

int[] oldPixels = new int[(int)(oldBitmap.getWidth() - deltaX) * oldBitmap.getHeight()]; 
      m_CurrentBitmap.getPixels(oldPixels, 0, (int) (oldBitmap.getWidth() - deltaX), (int)deltaX, 0, (int) (oldBitmap.getWidth() - deltaX), oldBitmap.getHeight()); 

newBitmap.setPixels(oldPixels, 0, (int) (oldBitmap.getWidth() - deltaX), 0, 0, (int) (oldBitmap.getWidth() - deltaX), oldBitmap.getHeight()); 

回答

0

編輯:好了,你基本上要繪製舊位圖的下面到新位圖。

您需要從OldBitmap像素藉鑑deltaXOldBitmap.WidthNewBitmap像素從0NewBitmap.width - deltaX。這應該使NewBitmap(NewBitmap.Width-deltaXNewBitmap.Width)的右邊距保持空白(假設它後面的畫布是白色的或任何「空白」顏色)。

+0

如果我使用deltaX作爲偏移量,那麼任何寬度> oldBitmap.getWidth() - deltaX都會給出一個outOfBounds異常。 – ab11 2010-11-12 16:57:41

+0

@ ab11我用至少數學部分更新了我的回答,讓我知道它是否沒有意義;)我不確定如何將繪圖僅精確地轉換爲位圖中的某個段,因爲我沒有以前沒做過。 – 2010-11-12 17:10:36

相關問題