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

Вниз

16 битное значение цвета из 32 битного представления   Найти похожие ветки 

 
homm ©   (2005-10-02 10:06) [0]

Тривиальная на первый взгля задача: Нужно из 32 бит цвета получить 16 бит, но выравненый по тем же краям.
Казалось бы чего проще: нужно просто обнулить младшие биты (Color AND $F8FCF8), ан нет, в 16 битах реальный
цвет например для цвета ($888888 AND $F8FCF8) вместо $888888 на экране получается $8C8A8C.


 
vrem   (2005-10-02 10:27) [1]

если 16 бит всего, то сколько на каждый из R, G, B ?
16 на 3 не делится. Поэтому выбрать сколько бит на каждый цвет устраивает.
Затем вспомнить, что 32 бита - это по 8 бит = палитра.B.G.R.
Задача сводится к такой - есть 8 бит на цвет, нужно n бит на цвет.
8 бит = 256 градаций, n бит - допустим 4 бита =2^4 = 16 градаций.
Взять значение 8-битного уровня и преобразовать -
((значение 8-битного уровня)/256)*(количество нужных градаций)


 
NightLord ©   (2005-10-02 10:32) [2]

> vrem   (02.10.05 10:27) [1]
Затем вспомнить, что 32 бита - это по 8 бит = палитра.B.G.R.


Насеолько я помно по 8 бит эт палитра 24 битная, или я ошибаюсь?


 
злобная танька   (2005-10-02 10:46) [3]

там ещё какая-то альфа добавляется в 32-битной вроде


 
MBo ©   (2005-10-02 10:52) [4]

Тут есть преобразование
http://www.delphimaster.ru/articles/pixels/index.html


 
homm ©   (2005-10-02 19:08) [5]

2 vrem

16 бит по умолчанию.(R-5,G-6,B-5). Мне не нужен был 16 битный цвет, мне нужно было 32 битное представление 16 битного цвета. (фактически 16->32, только 16 не известно, а известен ближайший к нему 32 цвет).

2 MBo

Спасибо, нашел перевод от 16 бит к 32 битам:
Result := (((w and $1F) * 541052) and $FF0000) or
           (((((w and $7E0) shr 5) * 266294) shr 8) and $FF00) or
           ((((w and $F800) shr 11) * 541052) shr 16);

Щас буду думать как без двойного преобразования (32->16->32) добится того-же.


 
MBo ©   (2005-10-03 07:36) [6]

>двойного преобразования (32->16->32)
Хм...
пожалуй, я не понимаю, что именно требуется



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

Форум: "Media";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.047 c
1-1139485756
Agt
2006-02-09 14:49
2006.03.12
Interactive service


2-1140952057
kot137
2006-02-26 14:07
2006.03.12
добавление поля в табл. с текущей датой


2-1140677728
Новочеркасский Волк
2006-02-23 09:55
2006.03.12
Перехват клавиш сервера., {TClientSocket. TServerSocket}


2-1140519531
reboot
2006-02-21 13:58
2006.03.12
Запыхался. .. .. .. .


1-1139405655
SiJack
2006-02-08 16:34
2006.03.12
аналог StrCopy для PWideChar





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