![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2008
Сообщений: 52
|
Доброго времени суток всем!
Столкнулся с задачей: в битмапе необходимо сделать заливку области ограниченой другим цветом. Тоесть как в пеинте ведро. Для этого использую такой код: import flash.display.BitmapData; var myBitmapData:BitmapData = BitmapData.loadBitmap("btm2"); var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth()); mc.attachBitmap(myBitmapData, this.getNextHighestDepth()); mc.onPress = function() { myBitmapData.floodFill(_xmouse, _ymouse, 0x000000FF); } Подскажите, пожалуйста, возможно ли как-то реализовать подобное? Очень важно чтоб залитая область в итоге оказалась именно в новом клипе, а в битмапе все осталось без изменений. Если что-то непонятно - уточню. |
|
|||||
|
Регистрация: Sep 2008
Сообщений: 52
|
dimarik
"Сложно и медленно" - это как я понимаю если делать через getPixel(), setPixel() в цикле волнового алгоритма...? Я очень наделялся, что возможно будет это сделать через стандартную функцию Не представляете как я был рад, когда понял, что для заливки не придется писать вышеназванный алгоритм обнаружив функцию floodFill, а получается что результат работы floodFill в другое место я не перенаправлю...Волгоградец "методами drawing API" - это moveTo(),lineTo()? думаю это никак мне не поможет |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 528
|
А нельзя ли сохранить битмапу до заливки, потом сделать заливку, а потом сравнить новый битмап со старым и получить область заливки? Потом её перенести.
|
|
|||||
|
Да, методами moveTo(), lineTo(), beginFill(), endFill().
Если не предполагается передвигать заливку, а только менять цвет - можно методом threshold() попробовать - но так затронутся другие области с таким же цветом как заливка. |
|
|||||
|
Регистрация: Sep 2008
Сообщений: 52
|
Stargazer
Я тоже об этом думал, но не знаю возможно ли это стандартными средствами. Если не возможно, то сравнительно быстрей будет работать самописный floodFill отсылающий результаты в другой клип нежели самописная проверка идентичности старого и нового битмапов. Волгоградец threshold() из-за затрагивания других областей непокатит, да и передвигать заливку нужно будет... а как с помощю moveTo(), lineTo() мне из исходного битмапа сделать заливку неправильной фигуры ограниченой другим цветом? |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 528
|
Цитата:
|
|
|||||
|
можно threshold'ом
только он не только то, что floodFill нашел пропустит, но и все пиксели с 0x000000FF, что может быть и не критично, если красить каким-нить экзотичным цветом |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:22. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| bitmapdata , floodFill |
| Опции темы | |
| Опции просмотра | |
|
|