Как повернуть конкретное изображение среди нескольких изображений, нарисованных на холсте в Android? - PullRequest
3 голосов
/ 16 июня 2010

Мне нужна небольшая помощь при повороте одного изображения вокруг его центра оси среди нескольких изображений, которые нарисованы на холсте в Android.

Я загружаю изображения на холст, как показано ниже.

canvas.drawBitmap(mMachineBackground, 0, 0, null);
canvas.drawBitmap(mMachineRotator, 0, 0, null);

Я хочу вращать только второе растровое изображение вокруг его центра оси вместо вращения всего холста (включая также первое растровое изображение).

Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 07 июля 2010

Вы можете вращаться вокруг центральной оси:

Matrix matrix = new Matrix();

//move image

matrix.setTranslate(getXPos() - (imageWidth / 2), getYPos() - (imageHeight / 2));

//rotate image, getXPos, getYPos are x & y coords of the image

matrix.postRotate(angleInDegrees, getXPos() - imageWidth / 2, getYPos() - imageHeight / 2);

//rotatedBMP is the image you are drawing, 

canvas.drawBitmap(rotatedBMP, matrix, Paint);
1 голос
/ 06 июня 2011
//Drawing the Player Canon.
           Matrix matrix = new Matrix();
           //move image
           newHeight = getHeight() - canon1[0].getHeight() - stand1.getHeight();
           Log.d(TAG, "New Height : " + newHeight);
           //matrix.setTranslate(0, getHeight() - canon1[0].getHeight() + stand1.getHeight());
           matrix.setTranslate(-newHeight,newHeight);

           //   rotate image, getXPos, getYPos are x & y coords of the image (ANgle in degree)).
           //matrix.postRotate(45, 0, getHeight() - canon1[0].getHeight() + stand1.getHeight());
           matrix.postRotate(-30,0,0);
           //Draw function. 
           canvas.drawBitmap(canon1[0], matrix, null);

Этот код, который я написал со ссылкой на приведенный выше код, работает абсолютно нормально.

Я могу повернуть определенное изображение на холсте.

0 голосов
/ 26 июня 2010

Боюсь, вы не можете этого сделать. Насколько я узнал, вы можете вращать весь контекст, но не один растровый рисунок. Матрица преобразования для того, что я знаю, может быть применена только ко всему холсту. (Я не гуру холста, но я тщательно изучаю ваш точно такой же вопрос)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...