Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 18.08.2004, 11:13
  № 1  
Linuxoid_Alex
Guest

Сообщений: n/a
По умолчанию Rgb

Люди, подскажите, plz:
как разложить rgb цвет на составляющие, то есть получить отдельно R,G и B?

Старый 18.08.2004, 11:43
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Это смотря в чем он у тебя имееться, в hex (например 0xFF024C или #FF024C ) или dec (16712268)

Старый 18.08.2004, 11:47
  № 3  
Linuxoid_Alex
Guest

Сообщений: n/a
в dec как Number

Старый 18.08.2004, 12:06
DeliMIter вне форума Посмотреть профиль Отправить личное сообщение для DeliMIter Найти все сообщения от DeliMIter
  № 4  
DeliMIter
некрофил
 
Аватар для DeliMIter

Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
В переменной с номером цвета биты 0..7 = B, 8..15 = G, 16..23 = R. Как и везде.
__________________
...убивать людей не удовольствия ради, но для еды.

Старый 18.08.2004, 12:35
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Математически (от обратного):
Допустим у тебя есть отдельно значения для каждого цвета R, G и B в dec. Тогда суммарное значение RGB=R*65535+G*255+B.

Соответственно, можно произвести и обратное преобразование )

Старый 18.08.2004, 13:15
  № 6  
Linuxoid_Alex
Guest

Сообщений: n/a
кому интересно:
Код:
r = Math.floor(clr/65536);
g = Math.floor((clr-r*65536)/256);
b = clr-r*65536-g*256;

Старый 18.08.2004, 13:23
  № 7  
Linuxoid_Alex
Guest

Сообщений: n/a
Цитата:
Допустим у тебя есть отдельно значения для каждого цвета R, G и B в dec. Тогда суммарное значение RGB=R*65535+G*255+B.
смотри для 0xff0000, соответственно r=255
по твоей формуле: RGB=255*65535, проверим:
Код:
trace (0xff0000);
var clr=255*65535;
trace (clr);
Получаем:
16711680
16711425
Так - что надобно:
RGB=R*65536+G*256+B.

Старый 18.08.2004, 13:28
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Верно )) В байте 256 бит, но значения от 0 до 255.

Старый 18.08.2004, 14:06
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 9  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
А нельзя разве так:

r = ((col>>16)&0xFF);
g = ((col>>8)&0xFF);
b = (col&0xFF);

Или битовые операции нельзя использовать?

Старый 18.08.2004, 18:02
fiot вне форума Посмотреть профиль Отправить личное сообщение для fiot Посетить домашнюю страницу fiot Найти все сообщения от fiot
  № 10  
fiot
 
Аватар для fiot

Регистрация: Nov 2001
Адрес: Kyiv
Сообщений: 158
Отправить сообщение для fiot с помощью ICQ
По умолчанию или так...

Код:
Object.prototype.HEXtoRGB = function(hex)
{
	var rgb24 = (isNaN(hex)) ? parseInt(hex, 16) : hex;
	this.r = rgb24 >> 16;
	this.g = (rgb24 ^ (this.r << 16)) >> 8;
	this.b = (rgb24 ^ (this.r << 16)) ^ (this.g << 8);
	trace('r:'+this.r+' g:'+this.g+' b:'+this.b)
	return
};
/* test */
b = {}
hex = 0xD96926; //r:217, g:105, b:38
b.HEXtoRGB(hex);
__________________
file-> new-> F9 -> Ctrl+v/*code*/ ->ctrl+enter

Создать новую тему   Часовой пояс GMT +4, время: 17:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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