![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2013
Сообщений: 8
|
Есть фоновое изображение, у которого изменены scaleX, scaleY и rotation (применена матрица трансформаций), поверх него находится векторный Shape, в котором нарисован некоторый замкнутый контур, с заливкой. Требуется вырезать из фонового изображения пикселы, лежащие под контуром.
Внятно объяснить задачу не могу, поэтому приведу аналогию. Аналогично работает CropTool в любом графическом редакторе (например Lasso). Выделяем требуемую нам область и копируем ее на пустое изображение таких же размеров, по тем же координатам. Самый простой и очевидный вариант - сделать векторный Shape маской для фонового изображения и сделать draw исходного изображения с поверх наложенной маской, на свежесозданный битмап таких же размеров. Но видимо из за трансформаций фона, draw работает непонятно как - в новом изображении маской вырезана совсем другая область. Пробовал через блэндмоды, но тоже не получается. Последний раз редактировалось anonrab; 25.06.2013 в 18:15. |
|
|||||
|
Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
|
Поместите изображение и маску в контейнер(Sprite) и отрисовывайте в новую BitmapData-у именно контейнер, указав размеры того же контейнера
__________________
FlashPress.ru | Blog |
|
|||||
|
Создаёшь две новых битмапки тех же размеров, что и Shape, затем в одну рисуешь свой фон относительно координат Shape, в другую сам Shape. С помощью метода copyChannel копируешь любой R, G, или B канал в альфа канал первой. Профит.
__________________
if (love is true) break my.heart; |
|
|||||
|
Регистрация: Jun 2013
Сообщений: 8
|
Спасибо! Проблема решена. Впринципе как вы сказали, так я изначально и делал. Ошибка закралась в том, что во время draw, преобразованный контэйнер я возвращал начальное состояние присваивая ему матрицу new Matrix(1, 0, 0, 1, 0, 0). А маска в нем оставалась не приобразованной и при рисовании была неправильного размера. Решил я это сохранением матрицы преобразований начального контэйнера, инверсией его и применением к маске во время рисования.
Уже который раз сталкиваюсь с проблемами из за плохого понимания принципов работы draw и матриц преобразований. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:13. |
|
|
« Предыдущая тема | Следующая тема » |
|
|