Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Конвертирование цветов   Найти похожие ветки 

 
Evgeniy_K   (2004-07-28 17:11) [0]

Как оптимальней конвертировать RGB в любой: 8, 32 бит.


 
OSokin ©   (2004-07-28 18:15) [1]

Не понял немного вопроса.


 
Evgeniy_K   (2004-07-28 18:32) [2]

Ну вот пример, а точнее что я хочу:
function ColorBit(Color: DWORD; BitCount: Integer; Intensity: Real): DWORD;
var
 r, g, b: byte;
begin
 //
 if Intensity > 1 then Intensity:= 1;
 r:= round(GetRValue(Color) * Intensity);
 g:= round(GetGValue(Color) * Intensity);
 b:= round(GetBValue(Color) * Intensity);
 Result:= b or (g shl 5) or (r shl 11);
end;

Мне надо, чтобы функция работала не только для 16 битного режима. Т.е. функция возвращает цвет. Если он был 16 битным красным, то и 32-битным надо, чтобы был красным.


 
OSokin ©   (2004-07-28 18:40) [3]

Дык умножь на два


 
Evgeniy_K   (2004-07-28 18:47) [4]

что конкретно умножить? Подробней, плз, у себя проверь


 
Evgeniy_K   (2004-07-28 18:52) [5]

не работает [3], по всякому пробовал


 
Evgeniy_K   (2004-07-28 18:53) [6]

Нужно как-то взять старый цвет RGB и приписат к нему нужный альфа-канал. Как это сделать? И Как быть с 8 бит?


 
OSokin ©   (2004-07-28 18:59) [7]

Сделай не byte, а word (byte - 8 бит, word - 16) и умножь на два r, g и b. Имхо сработает.


 
Zer0 ©   (2004-07-28 19:11) [8]

в формате 8-бит используются индексы вместо rgb компонент.
для преобразования придется подбирать наиболее подходящую палитру, и хитрить с комбинациями цветов для плавных переходов.

эта задача оч ресурсоемкая и не рассчитана на рилтайм-работу.


 
Evgeniy_K   (2004-07-28 19:17) [9]

Понятно, а как быть с 32 бит?


 
Drinkins   (2004-07-29 09:48) [10]

первый бит хранит номер палитры. остальные номер цвета в этой палитре.. кажется так... Или я ошибаюсь...


 
Evgeniy_K   (2004-07-29 12:30) [11]

поподробней, плз. Можно алгоритмически?


 
Ricks   (2004-07-29 14:01) [12]

32 битный цвет состоит из того-же RGB и Alpha канала.
То есть : $AARRGGBB


 
Darthman ©   (2004-07-29 14:03) [13]

function ColorBit32(Color: DWORD; BitCount: Integer; Intensity: Real): DWORD;
var
r, g, b: byte;
begin
//
if Intensity > 1 then Intensity:= 1;
r:= round(GetRValue(Color) * Intensity);
g:= round(GetGValue(Color) * Intensity);
b:= round(GetBValue(Color) * Intensity);
Result:= $FF000000 or b or (g shl 8) or (r shl 16);
end;


 
Evgeniy_K   (2004-07-29 17:19) [14]

Близко ведь был, что-то подобное в голове вертелось. Оч. благодарен.

Все гениальное - просто (с)



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.058 c
1-1100418611
jiuradsa
2004-11-14 10:50
2004.11.28
Как узнать число ли в текстовом поле?


8-1093505993
Andrey
2004-08-26 11:39
2004.11.28
распознование формата картинки


3-1099332069
MMN
2004-11-01 21:01
2004.11.28
Инкрементирование поля


14-1100184521
NewDelpher
2004-11-11 17:48
2004.11.28
windows 2000


4-1098102737
Oyster
2004-10-18 16:32
2004.11.28
Отслеживание новых файлов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский