Главная страница
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.016 c
3-33048
Sasha111
2003-07-18 09:55
2003.08.11
NetWork файлы


4-33411
Degobar
2003-06-08 18:06
2003.08.11
Активизация окна


14-33352
N&N
2003-07-25 08:18
2003.08.11
Где найти FireBird-1.5


14-33310
keymaster
2003-07-24 13:53
2003.08.11
Проблема с win XP


1-33135
Alex-21
2003-07-22 22:26
2003.08.11
SetFocus и скролл