Использование matrix.postRotate() для поворота растрового изображения и добавления его на холст

#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 любят удивлять … 😉