Я хотел бы «сдвинуть» растровое изображение на определенное смещение x и y. По смене, я имею в виду, если у меня есть растровое изображение размером 300 x 500, и я сдвигаю его с помощью смещения -50, я ожидаю, что каждый пиксель будет перемещаться на 50 пикселей, а прямоугольник размером 300 × 50 пикселей будет пустым, в нижней части растрового изображения , Приведенный ниже код отлично работает, если shiftX и shiftY отрицательны, но не работают вообще для положительных значений. Я не имею понятия почему?Android: как сдвинуть растровое изображение?
Rect srcRect = new Rect(-shiftX, -shiftY, mBitmap.getWidth(), mBitmap.getHeight());
Rect destRect = new Rect(srcRect);
destRect.offset(shiftX, shiftY);
Canvas bitmapCanvas = new Canvas(mBitmap);
bitmapCanvas.drawBitmap(mBitmap, srcRect, destRect, null);
Я пробовал много разных версий этого. Кажется, что попытка перевести битмап с положительным y всегда производит мусор. В этом простом примере, отрицательный бегающие дает ожидаемое поведение, но положительный бегающие дает результат мусора:
Canvas bitmapCanvas = new Canvas(mBitmap);
bitmapCanvas.drawBitmap(mBitmap, 0, shiftY, null);
* Update. Это решается приведенным ниже кодом. Однако это не эффективная память. Любые предложения для лучшего решения?
Canvas bitmapCanvas = new Canvas(mBitmap);
Bitmap tempBitmap = mBitmap.copy(CONFIG.ARGB_8888, false);
bitmapCanvas.drawBitmap(tempBitmap, 0, shiftY, null);
'не work' означает, что именно? Что вы получаете? – WarrenFaith
создает, по-видимому, результат мусора – ab11
почему вы создаете новый холст? – WarrenFaith