2010-11-12 47 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

相关问题