Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.057 c
1-1100610211
Chery
2004-11-16 16:03
2004.11.28
Как Borland Socket Server сделать службой ?


1-1100450057
qp
2004-11-14 19:34
2004.11.28
Передача указателя на динамич мас в функция


1-1100285777
CherrLy
2004-11-12 21:56
2004.11.28
Приравнять динамические переменные


3-1099044019
Andreww
2004-10-29 14:00
2004.11.28
[ODAC] Можно ли изменить состояние dataset перед ApplyUpdates?


14-1100313119
DelphiN!
2004-11-13 05:31
2004.11.28
Есть ли в DMClient-е поиск по базе данных сайта Мастаков?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский