Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как пересчитать цвет для его усиления-затемнения (http://www.flasher.ru/forum/showthread.php?t=149428)

djyamato 25.01.2011 00:54

Как пересчитать цвет для его усиления-затемнения
 
Здравствуйте
есть цвет, к примеру 0xFF0000
как мне пересчитать его, чтобы он стал немного темнее, подскажите, будьте добры

bav 25.01.2011 01:02

Что значит пересчитать? Чтобы красный стал темнее, следует уменьшить значение соответствующего канала, например 0xAA0000.

Psycho Tiger 25.01.2011 01:05

Например умножить на *0.75

djyamato 25.01.2011 01:11

Вложений: 1
Я думал разложить на RGB и по отдельности отнять по 10-ке, к примеру, от значений каждого из каналов, а потом заново "собрать" измененный цвет, я вот что подразумевал под "пересчитать"

Psycho Tiger, спасибо, попробую
bav, дело в том что цвет может быть любым, и я не могу знать точно какой из каналов менять

P.S. Умножение цвета на дробь, к сожалению, не дает затемненного исходного цвета

djyamato 25.01.2011 04:05

Вложений: 1
Код AS3:

var LineColor=0xFF0000;
var red:uint  =(LineColor & 0xff0000) >>> 16;
var green:uint  =(LineColor & 0xff00) >>> 8;
var blue:uint  =(LineColor & 0xff);
 
red=red*0.75;
green=green*0.75;
blue=blue*0.75;
 
red <<= 16; // xxxxxxxx 00000000 00000000
green <<= 8//          xxxxxxxx 00000000
blue = blue;  //                    xxxxxxxx
 
ResampledLineColor= red | green | blue;

Результат правильный получается

incvizitor 25.01.2011 13:29

Цитата:

Например умножить на *0.75
получиться BF4000.

Psycho Tiger 25.01.2011 13:38

Я имел ввиду умножить каждый канал.

passertm 25.01.2011 13:45

Проблема простого умножения на друбное в том что если к примеру 0х30000(темно красный без оттенков других цветов) умножить на 0.5 получается 0х15000(т.е. цвет с оттенком зеленого). Так что думаю правильнее всего умножать каналы по отдельности, так как вы и сделали.

djyamato 25.01.2011 14:02

Спасибо всем за советы, хорошо что вопрос вешился.
Я не умел "раскладывать" цвет на каналы и обратно "собирать" его.

P.S. Кстати, я делаю обводку затемненным цветом при помощи фильтра Glow (inner=true), есть ли какой-нибудь другой способ ?

Psycho Tiger 04.02.2011 13:59

Можно рисовать менее тонкой обводкой по более толстой =)
По поводу битов и байтов, как вычислять цвет и как это работает.


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

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