![]() |
|
||||||||||
|
|||||
|
Спасибо iNils в который раз уже выручаешь, надеюсь и я когда-нибудь смогу тебе помочь.
![]() |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
А вот еще теория
http://algolist.manual.ru/graphics/fill.php PS. Забросил я идею с заливкой из-за малой скорости выполнения. |
|
|||||
|
Теория - это вообще тема, это самое приятное, что я могу получить (не считая исходников конечно
) |
|
|||||
|
Цитата:
у меня другая идея появилась но как реализовать пока не знаю. Вобщем примерно так: 1. делаем битмап из картинки 2. Определяем область заливки (берем точку смотрим её цвети смотрим смежные пикселы на предмет совпадения цвета) 3. В другом битмапе рисуем то че нада залить 4. Аттачим к исходному рисунку нарисованные битмап Ну вобщем как то так... Только пока смутно представляю как смежные пикселы проверять...
__________________
Флеш граффити на Любимом Городе |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 1,155
|
Ищите в гугле, особенно в исходниках Delphi и С, что вы всё велосипед изобретате???
|
|
|||||
|
Цитата:
Я сделал вот так : // делаем из нарисованого битмап var holst:BitmapData = new BitmapData(avatar_mc.oblast.width,avatar_mc.oblast.height); holst.draw(avatar_mc,null,null,null,avatar_mc.oblast); // заливаем то что надо holst.floodFill(m_x, m_y, 0x00FF0000); // делаем ещё один битмап из нарисованного var ishodnik:BitmapData = new BitmapData(avatar_mc.oblast.width,avatar_mc.oblast.height); ishodnik.draw(avatar_mc,null,null,null,avatar_mc.oblast); //сравниваем битмапы var diffBmpData:BitmapData = holst.compare(ishodnik) as BitmapData; // а терь заливаем ещё раз diffBmpData.floodFill(m_x, m_y, pipetka.selectedColor); //ну а теперь аттачим все это к нарисвоаному var bm:Bitmap = new Bitmap(diffBmpData); bm.x=0; bm.y = 0; avatar_mc.addChild(bm);
__________________
Флеш граффити на Любимом Городе |
|
|||||
|
заработало!!!!
косяк был в
__________________
Флеш граффити на Любимом Городе |
|
|||||
|
вот работающий код:
var holst:BitmapData = new BitmapData(avatar_mc.oblast.width,avatar_mc.oblast.height,false);
holst.draw(avatar_mc,null,null,null,avatar_mc.oblast);
holst.floodFill(m_x, m_y, 0x00FF0000);
var ishodnik:BitmapData = new BitmapData(avatar_mc.oblast.width,avatar_mc.oblast.height,false);
ishodnik.draw(avatar_mc,null,null,null,avatar_mc.oblast);
var diffBmpData:BitmapData = holst.compare(ishodnik) as BitmapData;
var resultat:BitmapData = new BitmapData(avatar_mc.oblast.width,avatar_mc.oblast.height,true);
resultat.draw(diffBmpData,null,null,null,avatar_mc.oblast);
resultat.floodFill(m_x, m_y, 0xFFFF0000);
resultat.floodFill(1, 1, 0x00FFFFFF);
var bm:Bitmap = new Bitmap(resultat);
bm.x=0;
bm.y = 0;
avatar_mc.addChild(bm);
компонент выбора цвета отдает цвет в виде числа какого то как его конвертнуть в ARGB пока не догнал Сглаживание делает пиксели рядом с линией другого цвет поэтому по контуру заливки белая полоска... толи как то сглаживание отрубить нада то ли заливку больше сделать...
__________________
Флеш граффити на Любимом Городе |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:12. |
|
|
« Предыдущая тема | Следующая тема » |
|
|