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());
如果我使用deltaX作爲偏移量,那麼任何寬度> oldBitmap.getWidth() - deltaX都會給出一個outOfBounds異常。 – ab11 2010-11-12 16:57:41
@ ab11我用至少數學部分更新了我的回答,讓我知道它是否沒有意義;)我不確定如何將繪圖僅精確地轉換爲位圖中的某個段,因爲我沒有以前沒做過。 – 2010-11-12 17:10:36