Есть ли способ найти размер области в растровом изображении, который был заполнен с помощью метода bitmapdata.floodfill? - PullRequest
0 голосов
/ 27 сентября 2011

По сути, я использую метод заливки, чтобы закрасить участки растрового изображения. Эта часть достаточно проста, но проблема заключается в том, как я добавляю эффект в процедуру заливки цвета.

Чтобы добавить эффект, сначала создается копия данных растрового изображения, и вместо нее используется заливка вместо исходного растрового изображения. Затем метод bitmapdata.compare используется для установки значения альфа всего, кроме заполненного раздела, равным 0, и результат сохраняется в другом растровом изображении. После этого на сцену добавляется спрайт с радиусом в 1 пиксель, который пересекается с размерами изображения, а его маска устанавливается на спрайт, который содержит результат операции сравнения.

Это работает отлично, за исключением того факта, что спрайт-заполнитель необходимо адаптировать к полному размеру изображения, независимо от того, насколько мала область окрашивания, поскольку я не могу найти способ получить размеры заливки. площадь. Я делаю обновление растрового изображения в конце анимации, и мне нужно отключить взаимодействие с пользователем до тех пор, пока анимация не будет завершена, чтобы избежать ошибок, которые возникают, если перед обновлением базового изображения запускается другая операция заполнения. Если бы я мог как-то получить размеры области заполнения, тогда время, в течение которого я должен отключить взаимодействие с пользователем, значительно уменьшилось бы.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 27 сентября 2011

А как насчет getColorBoundsRect ? Я не знаю, будет ли ваш цвет заливки присутствовать в других частях вашего растрового изображения, но это может сработать.

1 голос
/ 27 сентября 2011

Я думаю, getColorBoundsRect - это именно то, что вам нужно. Вы выбираете цвет и получаете ограничительную рамку этого цвета в растровом изображении.

0 голосов
/ 27 сентября 2011

Напишите свою собственную процедуру заполнения.По мере заполнения пикселей сохраняйте необходимую информацию о размерах.Простейшим было бы просто хранить ограничивающую рамку.Вы заполняете, находя соседние пиксели соответствующего цвета, и каждый раз, когда такой ход выводит вас из рабочего ограничивающего прямоугольника, настраивайте.

Более сложный может хранить растровое изображение.В любом случае, суть в том, что вы получите то, что вам нужно, с большей готовностью, не работая над тем, для чего не было предназначено.

...