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

Вниз

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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.03 c
2-1140570136
Bogdan1024
2006-02-22 04:02
2006.03.12
Скомандовать виндовс открыть файл.


15-1140363552
Cerberus
2006-02-19 18:39
2006.03.12
Помогите выбрать мобилу.


2-1140957667
Федун
2006-02-26 15:41
2006.03.12
Вопрос по TDBLookupComboBox


3-1137783314
olevacho_
2006-01-20 21:55
2006.03.12
Ошибка cannot transliterate character between character sets


15-1139843402
VictorT
2006-02-13 18:10
2006.03.12
Как молоды мы были, или смешные исходники :D