PDA

Просмотр полной версии : Изменение цвета векторной графики


Nikelin
24.02.2008, 04:01
Столкнулся с проблемой во время создания небольшой программки.

Суть такова, что есть векторное изображение (изначально чёрного цвета с прозрачным фоном) цвет которого необходимо изменить.
В целом brutforce-метод попиксельного перебора пробовал, но если учитывать, что изображение может достигать 250х250 пикселей, он не вписывается в рамки быстродействия.

Может существует более простые методы изменения цвета ?

Посмотреть пример программы, о которой я говорю можно тут:
http://my.futbolka.ua/constructor.html

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

Огромная просьба дать ссылки на статьи, посты и прочее, посколько тема действительно горячая.


Спасибо.

Olegg
25.02.2008, 13:41
Ну вот смотри.Как ты меняешь цвет мувика,если он на сцене?
Через Color / Tint ...И там уже вводишь цвет.
программно это тоже можно сделать как-то....надо подумать,так сразу и не скажу.

Nikelin
26.02.2008, 02:15
Вот именно, что нужно программно....

MrPoma
26.02.2008, 02:46
Color, ColorTransform, ColorMatrixFilter.

WindWalker
26.02.2008, 05:38
// это пишем вверху класса или в первой строке, если код пишешь в кадре
import flash.geom.ColorTransform;

// создаём новое преобразование цветов
var ct:ColorTransform = new ColorTransform();

// это самый простой способ его использования. в данном случае говорим, перекрашиваем в красный
ct.rgb = 0xff0000;

// накладываем преобразование на мувик
mc.transform.colorTransform = ct;

Следует обратить внимание на то, что наложение преобразования делается только прямым присваиванем.
Т.е. не создаётся никакой привязки между мувиком и преобразованием.

Можно как угодно менять ct - это никак не повлияет на мувик.
И только когда присвоишь его в transform.colorTrans - только тогда произойдёт изменение цвета.

Здесь я привёл только самый простой способ использования.
Вообще возможностей немного больше (аналогично Advanced в редакторе).

Например:
ct = new ColorTransform(0.1, 0.2, 0.3, 1, 0, 50, 100, 0);
создаст преобразование, которое:
уменьшает красную составляющую до 10%
уменьшает зелёную составляющую до 20%
уменьшает синию составляющую до 30%
оставляет альфу на 100%
прибавляет к красному 0
прибавляет к зелёному 50
прибавляет к синему 100
прибавляет к альфе 0