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

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

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

Регистрация: Dec 2009
Сообщений: 64
По умолчанию Рисование празрачностью

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

Заранее спасибо.

Старый 25.08.2010, 22:35
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
при правильной подготовке непрямоугольной области поможет BitmapData#copyChannel()
__________________
Поймай яблоко 2!

Старый 25.08.2010, 22:41
k0syak вне форума Посмотреть профиль Отправить личное сообщение для k0syak Найти все сообщения от k0syak
  № 3  
Ответить с цитированием
k0syak

Регистрация: Dec 2009
Сообщений: 64
А как правильно подготовить?=)

Старый 25.08.2010, 22:42
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 4  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Тупо прямоугольник вырезать - bitmapData.fillRect(new Rectangle(x, y, width, height), 0x00000000); (первые 00 - это значение прозрачности)

Старый 25.08.2010, 22:46
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 5  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
k0syak, ну я бы произвольную маску из любого вида отрисовал в непрозрачную ч/б BitmapData (черная маска на белом фоне) и потом влоб использовал бы copyChannel() с указанием в качестве канала-источника любого (R, G или B), а в качестве канала-приемника — alpha.
__________________
Поймай яблоко 2!

Старый 26.08.2010, 13:07
k0syak вне форума Посмотреть профиль Отправить личное сообщение для k0syak Найти все сообщения от k0syak
  № 6  
Ответить с цитированием
k0syak

Регистрация: Dec 2009
Сообщений: 64
При черно белой маске (черное - где нужна прозрачность) получается прозрачность там где и надо, но где на маске был белый на результирующем bitmap-е получается черный. Вот код:
Код AS3:
var bitmapData : BitmapData;
				var r : Rectangle = newMovie.getRect(newMovie);
				bitmapData = new BitmapData(r.width, r.height, true, 0x00000000);
				var m : Matrix = new Matrix();
				m.translate(-r.x, -r.y);
				m.scale(newMovie.scaleX, newMovie.scaleY);				
				bitmapData.draw(newMovie, m);			
 
				resultBitMap.bitmapData.copyChannel(bitmapData,
						new Rectangle(0,0,bitmapData.width,bitmapData.height),
						new Point(0,0),
						BitmapDataChannel.RED,
						BitmapDataChannel.ALPHA);

Старый 26.08.2010, 13:47
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 7  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
подразумевалось, что исходная битмапдата будет непрозрачной.
А у вас прозрачная. Вот и получается что фон 0x00000000 превращается в 0xFF000000 после модификации альфа канала.
И кстати, можно упростить это
Код AS3:
new Rectangle(0,0,bitmapData.width,bitmapData.height)
вот в такое выражение
Код AS3:
bitmapData.rect

Старый 26.08.2010, 13:51
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 8  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
а что такое resultBitMap?
__________________
Поймай яблоко 2!

Старый 26.08.2010, 13:57
k0syak вне форума Посмотреть профиль Отправить личное сообщение для k0syak Найти все сообщения от k0syak
  № 9  
Ответить с цитированием
k0syak

Регистрация: Dec 2009
Сообщений: 64
Изменил на следующее, только ничего не поменялось
Кстати newMovie - это MovieClip с черно-белым битмапом.
resultBitMap - это результирующий битмап, где хотим нарисовать прозрачность
Код AS3:
var bitmapData : BitmapData;
				var r : Rectangle = newMovie.getRect(newMovie);
				bitmapData = new BitmapData(r.width, r.height, false);
				var m : Matrix = new Matrix();
				m.translate(-r.x, -r.y);
				m.scale(newMovie.scaleX, newMovie.scaleY);				
				bitmapData.draw(newMovie, m);			
 
				resultBitMap.bitmapData.copyChannel(bitmapData,
						bitmapData.rect,
						new Point(0,0),
						BitmapDataChannel.RED,
						BitmapDataChannel.ALPHA);


Последний раз редактировалось k0syak; 26.08.2010 в 13:59.
Старый 26.08.2010, 14:01
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 10  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
Сообщение от k0syak Посмотреть сообщение
resultBitMap - это результирующий битмап, где хотим нарисовать прозрачность
ну а где и как он у тебя создается? он у тебя, судя по результату операции, изначально черным залит. я думал у тебя есть картинка, в которой ты дырку прожигаешь.
__________________
Поймай яблоко 2!

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

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

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


 


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


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