Flex Matrix повернуть изображение на n градусов - PullRequest
0 голосов
/ 24 января 2010

Как я могу повернуть изображение, например. 180 градусов по часовой стрелке с использованием матрицы

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

var matrix:Matrix = new Matrix();

matrix.rotate(Math.PI/2);
matrix.tx = imgControl.content.height;

var bitmapData:BitmapData = new BitmapData(imgControl.content.height, imgControl.content.width);
bitmapData.draw(imgControl.content, matrix);
imgControl.source = new Bitmap( bitmapData);

Каждый раз, когда я запускаю код, изображение поворачивается на +90 градусов.

То, что я хочу, - это не увеличивать каждый раз на 90, а в явном виде, скажем, поворачивать 180, вращать 90 и т.

Я не знаком с Матрицей, но, думаю, она выполняет настоящие манипуляции с растровыми данными, а не просто, например. поверните окно компонента Image (арестуйте меня, если я ошибаюсь).

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

Я что-то упустил?

Заранее спасибо за любые советы и подсказки

Ran

1 Ответ

1 голос
/ 24 января 2010

Матрица не работает с настоящими битовыми данными.

Это вызов bitmap.draw, который рисует повернутое изображение imgcontrol.content в растровое изображение, после чего ваш код перезаписывает imgcontrol.content повернутым изображением.

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

Если вам нужно сделать несколько поворотов на 90 градусов за один шаг, замените

matrix.rotate(Math.PI/2);

с

matrix.rotate(Math.PI/2 * howmanytimesyouwanttorotateby90degrees);
...