#android #android-canvas
#Android #android-холст
Вопрос:
Я пытаюсь повернуть растровое изображение и добавить его на холст. Код кажется простым, однако изображение не поворачивается. Я не могу использовать canvas.rotate(), так как я накладываю изображения и не хочу, чтобы первое изображение было повернуто. Я проверил правильность степени поворота с помощью tattoo.getRotation(), и я также пробовал это с жестко запрограммированной степенью, но это тоже не работает.
public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
Matrix matrix1 = new Matrix();
matrix1.setScale(imageView.getScaleX(), imageView.getScaleY());
matrix1.setTranslate(imageView.getX(), imageView.getY());
canvas.drawBitmap(bmp1, matrix1, null);
Matrix matrix2 = new Matrix();
matrix2.setTranslate(tattoo.getX(), tattoo.getY());
matrix2.postRotate(tattoo.getRotation());
matrix2.setScale(tattoo.getScaleX(), tattoo.getScaleY());
canvas.drawBitmap(bmp2, matrix2, null);
return bmOverlay;
}
Комментарии:
1.
setScale
сбрасывает целоеMatrix
: вы теряете как перевод, так и поворот2. Вау! Кто знал? Большое спасибо pskink.
3. никто не знал, ребята из Google любят удивлять … 😉