2010-06-24 9 views
0

У меня есть спрайт, который имеет форму выпуклого многоугольника (не прямоугольного).
Если я его снимок с помощью:Метод рисования растровых данных - замена несущих пикселей синим цветом

var bmd:BitmapData = new BitmapData(width,height); 
bmd.draw(someSprite,someMatrix,null,null,null); 

Я получаю изображение, как это:

Click here to see the image

На этом изображении, я добавил зеленому Boundary себя, просто чтобы показать
размеры изображения.

Так что, когда я сделал снимок выпуклого многоугольника в форме спрайтов
с использованием методы рисования класса BitmapData, я получил красный треугольник
с белым эллипсом внутри и для остальной части района, я в то время как пиксели ,

Я хочу заменить их Внешние белые пиксели с синими пикселями.

Как это сделать?

ответ

0

Вы можете использовать метод BitmapData.floodFill(). Он работает так же, как «инструмент для рисования красок».

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

bmd.floodFill(0, 0, 0xff0000ff); //note that the color is in ARGB format. 

Если вы не можете предположить, что проблема заключается не о заполнении белой области, но найти его. Тогда нам нужно будет узнать больше о вашей проблеме. Мы не могли просто прорезать границы, ища белые пиксели, так как это может быть, например, средний эллипс.

+0

Я предполагал, что на внешней поверхности были белые пиксели. Теперь, когда я перечитаю название вопроса, я должен спросить: действительно ли они белые или просто прозрачные пиксели? Если они прозрачны и спрайт прочен, было бы проще. Вам просто нужно создать BitmapData с синим фоном. – mrkishi

+0

Оба они не работали для меня. может быть, я делаю что-то неправильно. – dharm0us

Смежные вопросы