У меня есть контейнер с замаскированным растровым изображением. Масштабирование и поворот этого контейнера меняются во время выполнения, и мне нужно нарисовать маскированное растровое изображение, но не могу найти подходящие вычисления матрицы для этого.Как я могу точно нарисовать повернутое растровое изображение?
Мой код работает правильно, чтобы отражать положение, масштаб, смещение для центрирования без вращения. При повороте угол правильный, но неправильное положение - я считаю, потому что размеры изменяются при повороте прямоугольника.
Может кто-то помочь мне понять, как компенсировать это в позиционировании - вот некоторый код:
// Adjust the transformation matrix to account for the position of the container
var tMatrix:Matrix = _imgContainer.transform.matrix;
//Offset for container
tMatrix.translate(this.x,this.y);
//Offset for bounds centering
tMatrix.translate(-_imgContainer.width/2,-_imgContainer.height/2);
// Compensate for rotation
// ????
var result_bitmap:BitmapData = new BitmapData(_maskedImg.width,_maskedImg.height,true,0x00FFFFFF);
result_bitmap.lock();
result_bitmap.draw(_maskedImg,tMatrix,null,null,null,true);
result_bitmap.unlock();
Заранее спасибо за любую помощь вы можете предоставить -
б
EDIT: Извините, если я не объясню это правильно, позвольте мне попробовать снова с изображением для поддержки. У меня есть маскированное растровое изображение в контейнере, который я использую в качестве источника для рисования нового растрового изображения. этот контейнер можно масштабировать/поворачивать во время выполнения пользователем перед захватом. Для этого я передаю метод рисования матрицу преобразования на основе матрицы контейнера и отрегулирует значения tx и ty для учета ненулевого начала (из-за центрирования). До этого момента он отлично работает и фиксирует то, что я ожидаю.
Однако после того, как этот контейнер повернут, ПОЗИЦИЯ захвата теперь снова выключена - предположительно из-за изменения размеров, поэтому смещения tx/ty теперь являются неправильными для новых размеров контейнера. Мне просто нужно компенсировать это, но не могу понять, как это сделать.
У кого-нибудь есть опыт работы с матрицей преобразования, которая может помочь? Еще раз спасибо за усилия!
Не думаю, что я понимаю, что ты пытаясь сделать: можете ли вы сделать снимок или снимок экрана? –
Обновлен вопрос с лучшим объяснением и 2 изображениями для справки - спасибо за усилия. – WillyCornbread