Вниз
Скачать: 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.029 c
15-1139983253
Ega23
2006-02-15 09:00
2006.03.12
С Днём рождения! 15 февраля


4-1135151640
vlad_Ladynin
2005-12-21 10:54
2006.03.12
Запись и воспроизведение действий пользователя.


15-1140180610
Manic Mechanic
2006-02-17 15:50
2006.03.12
горе от ума


6-1132861630
Николай2005
2005-11-24 22:47
2006.03.12
Ошибка 411 при отправке запроса через TIdHTTP методом POST


4-1135072687
Volf_555
2005-12-20 12:58
2006.03.12
Как вывести на экран все иконки из dll-файла?




   Наверх