Как я могу заставить мое изображение вращаться вокруг фиксированной точки при использовании растрового изображения? - PullRequest
3 голосов
/ 23 июня 2010

Я пытаюсь повернуть изображение в фиксированной точке, но изображение вращается в своей верхней левой позиции.Я попробовал rotateAnimation, и он работает нормально, но проблема в том, что когда я поворачиваю свое изображение снова, оно начинает вращаться из исходного положения.

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.arw2);
int w = bmp.getWidth();
int h = bmp.getHeight();
float px = 160,py = 215;
Matrix mtx = new Matrix();
mtx.setRotate(rAngle, px, py);
Bitmap rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, w, h, mtx, true);
BitmapDrawable bmd = new BitmapDrawable(rotatedBMP);
myImageView.setImageDrawable(bmd);

Что я делаю не так?

1 Ответ

0 голосов
/ 25 августа 2011

Если я правильно понимаю ваш вопрос, вы хотите иметь возможность поворачивать изображение один раз, а затем второй раз с того места, на котором оно остановилось.

Вы могли бы сделать это, повернув изображение на 30 градусов один раз, а затем снова повернув это изображение на 30 градусов (всего 60 градусов), но это приведет к потере качества и центра точка будет неправильной.

Лучшим решением было бы просто изменить значение rAngle, которое вы используете каждый раз, и всегда создавать повернутое изображение на основе исходного не повернутого исходного изображения. Поэтому вместо того, чтобы каждый раз поворачиваться (например, на 30 градусов), вы поворачиваете на 30 градусов, 60 градусов или 90 градусов и т. Д.

Если вы хотите, чтобы изображение поворачивалось на 30 градусов при каждом нажатии кнопки, вы должны сохранить количество щелчков в переменной, такой как buttonClicks, а затем установить rAngle = buttonClicks * 30 и выполнить вращение.

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