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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.08.2011, 18:22
PsixokoT вне форума Посмотреть профиль Отправить личное сообщение для PsixokoT Найти все сообщения от PsixokoT
  № 11  
Ответить с цитированием
PsixokoT

Регистрация: May 2008
Сообщений: 63
Цитата:
Сообщение от silin Посмотреть сообщение
такой вариант:
в копии битмапа округляем RGB-компонеты всех пикселей до нужной точности
floodFill'ом заливаем из заданной точки
threshold'ом берем только залитую часть
ее пририсовываем к оригиналу(или используем как маску)

медленно, канеш
возможно есть варианты и подешевле, но что-то у меня не сложилось, да и нужна была именно маска
Уважаемый silin.
А можно прокомментировать первый пункт пожалуйста. Просто это то самое что мне не нужно, но я не совсем понимаю реализации этого. Бегать по каждому пикселю? тогда уж это действительно будет медленно.

Может есть возможность все рализовать через threshold но только в диапозоне оттенков от цвета?
что то типа
Код AS3:
bitmapdata.threshold(bitmapdata,new Rectangle(0,0,bitmapdata.width,bitmapdata.height),new Point(),"<",maskColor+0x00101010);
bitmapdata.threshold(bitmapdata,new Rectangle(0,0,bitmapdata.width,bitmapdata.height),new Point(),">",maskColor-0x00101010);
p.s. сорри за некропост

Старый 12.08.2011, 18:35
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 12  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
можно через draw с blenMode DIFFERENCE
у меня такой вариант в результате сложился, пример есть
Код AS3:
public static function bucketFill(bmd:BitmapData, x:int, y:int, color:int, tol:int = 64):void
{
	var wandColor:int = bmd.getPixel(x, y);
 
	//битмап цвета точки клика
	var tmp:BitmapData = new BitmapData(bmd.width, bmd.height, false, wandColor);
 
	//битмап разницы между оригиналом и цветом
	tmp.draw(bmd, null, null, BlendMode.DIFFERENCE);
 
	//ColorMatrixFilter, суммирующий все компоненты в синий канал
	var clrMtrx:ColorAdjust = new ColorAdjust();
	clrMtrx.setChannels(0,0,7);//всех в синий
	tmp.applyFilter(tmp, tmp.rect, ORIGIN, clrMtrx.filter);
 
	//кроем нулем что не попадает в tol
	tmp.threshold(tmp, tmp.rect, ORIGIN, "<=", tol, 0x0, 0xFF);
 
	//заливаем  то, что получилось  из точки клика
	tmp.floodFill(x, y, 0xFF000000);
 
	//красим оригинал заказанным цветом по свопадению с заливкой floodFill'ом
	bmd.threshold(tmp, tmp.rect, ORIGIN, "==",  0xFF000000, color | 0xFF000000);
 
}
сейчас уже не помню деталей, но через попиксельное округление тоже вроде бы получалось, но как-то что-то не то, ну и медленней естественно

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

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

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


 


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


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