Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
6-1132918760
Dimedrol
2005-11-25 14:39
2006.03.12
Как выставить TwebBrowser-у UTF-8 кодировку ?


15-1139220980
lak__b
2006-02-06 13:16
2006.03.12
Подскажите пожалуйста на счет мобил


2-1140456167
МегаПупс
2006-02-20 20:22
2006.03.12
Видео плеер


2-1140631346
Volf_555
2006-02-22 21:02
2006.03.12
Как изменить функцию InputQuery, не переписывая её полностью?


15-1140500963
tsa
2006-02-21 08:49
2006.03.12
Соли нет!




   Наверх