Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Параметры mask и color в BitmapData.getColorBoundsRect (http://www.flasher.ru/forum/showthread.php?t=191503)

Alexmody 04.01.2013 17:08

Параметры mask и color в BitmapData.getColorBoundsRect
 
Параметры mask и color в BitmapData.getColorBoundsRect

rect = objectsMap.getColorBoundsRect(mask, color , true);
Подскажите, какие значения параметров задать для mask и color, если нужно получить пиксели не белого цвета (0xffffff).

Т.е. фон у BitmapData белый, на нем расположен черный круг со ссблюренными краями (черный с разной интенсивностью), нужно получить Rectangle данного круга включая полупрозрачные пиксели.

Сейчас сложно указать верные значения, т.к. не совсем понимаю параметр mask (в документации чрезмерно кратко написано).

Заблюренный круг на белом фоне:

http://i.pixs.ru/storage/4/1/1/Untit...54_6725411.jpg

silin 04.01.2013 18:46

Код AS3:

objectsMap.getColorBoundsRect(0x00FFFFFF, 0xFFFFFF, false);


Alexmody 04.01.2013 18:58

Третьим параметром вы поставили false, т.е. выделить все, только не белый цвет.

И если можно, объясните плиз, что тут подразумевается под параметром mask?

silin 04.01.2013 19:13

>>Третьий параметр может true?
может и тру, это смотря что нужно, false в данном случае заставит найти область с 'не белыми' пикселями
mask просто битовая маска, не нужно анализировать какой-то из каналов - ставим ему в маске 0

Alexmody 04.01.2013 19:26

Спасибо, на счет false, я выше поправился, но вот mask, например: 0x00990000 - (бардовый), то пиксели попадающие по красному каналу в диапазон 0-99, что с ними будет (вероятно эти пиксели не будут учитываться в Rectangle)?

silin 04.01.2013 19:38

я бы не стал связываться с 0x00990000
x99 это 10011001, хз какого результата ждать от такой маски

Alexmody 04.01.2013 20:21

Интересно, а если фон был бы не белый, а полностью прозрачный, то как бы выглядели mask и color?

silin 04.01.2013 20:52

>>Интересно, а если фон был бы не белый, а полностью прозрачный, то как бы выглядели mask и color?
ну раз уж так интересно, вот прямиком из хелпа для непрозрачных пикселей:
getColorBoundsRect(0xFF000000, 0x00000000, true);

Alexmody 05.01.2013 10:16

>>ну раз уж так интересно, вот прямиком из хелпа для непрозрачных пикселей:
>>getColorBoundsRect(0xFF000000, 0x00000000, true);
Все же в данном случае правильнее будет использовать false (также как и с белым фоном),
т.к. мы выделяем все непрозрачные пиксели, а второй параметр 0x00000000 является прозрачным пикселем.

Как я понял, битовую маску mask используют, для вкл./выкл. каналов подставляя в основном FF или 00
для канала или все же разные значения канала тоже часто используют (напр. 0x00990000)?

Wolsh 05.01.2013 11:20

Вы можете привести пример, как это использовать?)))
"Значения канала" задаются в color. А маска это маска, ее смысл только в том, чтобы не учитывать при поиске каналы, которые могут иметь любое значение. Например, чтобы искать белый цвет с любой альфой, мы маскируем альфу (не учитываем ее), а каналы учитываем — маска 0x00FFFFFF. Сначала установленный color будет преобразован в поисковый сэмпл: color & 0x00FFFFFF, затем при поиске значения проверяемых пикселов будут точно так же маскироваться, и какая бы альфа ни была, при сравнении с сэмплом она будет рассматриваться как нулевая, то есть никак не будет влиять на результат сравнения. Теоретически Вы наверное можете делать побитовый & каналов пикселей с 0х99, вот только практический смысл такой фильтрации мне крайне затруднительно представить, даже для определения цветов, которые пройдут такую проверку, мне понадобится написать тест — мозг с этим не сможет справиться)))


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

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