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