Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.06.2013, 17:39
anonrab вне форума Посмотреть профиль Отправить личное сообщение для anonrab Найти все сообщения от anonrab
  № 1  
Ответить с цитированием
anonrab

Регистрация: Jun 2013
Сообщений: 8
По умолчанию Вырезание контура из Bitmap

Есть фоновое изображение, у которого изменены scaleX, scaleY и rotation (применена матрица трансформаций), поверх него находится векторный Shape, в котором нарисован некоторый замкнутый контур, с заливкой. Требуется вырезать из фонового изображения пикселы, лежащие под контуром.

Внятно объяснить задачу не могу, поэтому приведу аналогию. Аналогично работает CropTool в любом графическом редакторе (например Lasso). Выделяем требуемую нам область и копируем ее на пустое изображение таких же размеров, по тем же координатам.

Самый простой и очевидный вариант - сделать векторный Shape маской для фонового изображения и сделать draw исходного изображения с поверх наложенной маской, на свежесозданный битмап таких же размеров. Но видимо из за трансформаций фона, draw работает непонятно как - в новом изображении маской вырезана совсем другая область.

Пробовал через блэндмоды, но тоже не получается.


Последний раз редактировалось anonrab; 25.06.2013 в 18:15.
Старый 25.06.2013, 17:50
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 2  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
Поместите изображение и маску в контейнер(Sprite) и отрисовывайте в новую BitmapData-у именно контейнер, указав размеры того же контейнера
__________________
FlashPress.ru | Blog

Старый 25.06.2013, 18:03
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 3  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Создаёшь две новых битмапки тех же размеров, что и Shape, затем в одну рисуешь свой фон относительно координат Shape, в другую сам Shape. С помощью метода copyChannel копируешь любой R, G, или B канал в альфа канал первой. Профит.

Старый 25.06.2013, 18:10
anonrab вне форума Посмотреть профиль Отправить личное сообщение для anonrab Найти все сообщения от anonrab
  № 4  
Ответить с цитированием
anonrab

Регистрация: Jun 2013
Сообщений: 8
Спасибо! Проблема решена. Впринципе как вы сказали, так я изначально и делал. Ошибка закралась в том, что во время draw, преобразованный контэйнер я возвращал начальное состояние присваивая ему матрицу new Matrix(1, 0, 0, 1, 0, 0). А маска в нем оставалась не приобразованной и при рисовании была неправильного размера. Решил я это сохранением матрицы преобразований начального контэйнера, инверсией его и применением к маске во время рисования.

Уже который раз сталкиваюсь с проблемами из за плохого понимания принципов работы draw и матриц преобразований.

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:13.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.