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

Вниз

Microsoft перестарался   Найти похожие ветки 

 
Igor__ ©   (2003-07-23 08:38) [0]

Есть API функция, называемая SetDIBits. И она при использовании палитры делает никому ненужную "оптимизацию". Например в палитре встречаются два одинаовых цвета (например 13 и 14 - черные), тогда при записи этой функцией все цвета под индексом 14(т.е. в параметрах, передаваемый массив содержит 14) запишутся под индексом 13 (т.е. первый индекс этого цвета).

Уже 3-й день мучаюсь над этой проблемой. Думал читать и писать картинку "ручками", но нехочу, ведь должно быть умное решение на API.


 
MBo ©   (2003-07-23 10:40) [1]

действительно, такая "оптимизация" существует ;(

позволяет избавиться от этого запись через ScanLine или
http://www.delphimaster.ru/articles/pixels/index.html


 
Igor__ ©   (2003-07-23 18:16) [2]

Можете себе представить - 2 дня в конференции WinApi стоял этот вопрос. Оказывается не только я давно не заходил в роздел "Статьи" :).


> MBo

Большое спасибо!!! Я вообще думал, что ScanLine использует GetDIBits и я так был в этом уверен, что не проверял :)))).


 
MBo ©   (2003-07-24 06:50) [3]

Вообще-то я не представляю, зачем может понадобиться палитра с одинаковыми цветами.
Однако, если непременно хочется использовать SetDiBits, нужно использовать методы ТРИЗ Альтшуллера.

Требуется: занести с помощью GetDiBits нужнфе значения в массив данных диба.
Противоречие: хитрая палитра при работе GetDiBits мешает.
Преодоление: ПЕРЕД GetDiBits устанавливаем палитру со всеми разными цветами, ПОСЛЕ - меняем палитру на нужную.


 
Igor__ ©   (2003-07-24 08:55) [4]


> Вообще-то я не представляю, зачем может понадобиться палитра
> с одинаковыми цветами.

Очень даже надо, но очень даже редко. Если ты регулярно смотришь это конференцию, то знаеш, что я пишу прогу по стеганографии. При 8-битном растре я методом Флойда Стеинберга сужаю палитру (кстати, как это по научному называется) до , например 32 цветов. Потом заполняю этими 32 цветами палитру. Получается что я могу заменить три старших бита каждого байта в потоке растра, поскольку цвет при этом не изменица. Вот такая вот фича.


 
Кот Бегемот ©   (2003-07-24 09:00) [5]

2MBo © (24.07.03 06:50)
>Вообще-то я не представляю, зачем может понадобиться палитра с одинаковыми цветами.

Может быть для установки прозрачности ??? - было два черных, а потом опаньки - и один цвет заменяется на фон :)
Хотя если это именно DIB то IMHO проще сделать один черный, а другой почти черный.



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
1-33133
R
2003-07-28 02:05
2003.08.11
Как перевести String в PWideChar


14-33306
Неунывающий канделябр
2003-07-23 18:35
2003.08.11
Декодировать MIME


4-33404
sizmrebi
2003-06-09 11:56
2003.08.11
Ispolzovanie Sobstvennix shriftov v Menu,Caption.....


14-33367
Best Gun
2003-07-21 23:22
2003.08.11
Какими болванкамив вы пользуетесь?


14-33343
AlexRush
2003-07-24 18:28
2003.08.11
Ставим на работе новую винду, и вдруг она