Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
1-33158
Relaxxx
2003-07-28 11:43
2003.08.11
Как мне узнать какого числа в указаном месяце выходные (т.е. суб)


1-33146
Новик
2003-07-25 16:40
2003.08.11
DLL


14-33371
bug008
2003-07-21 23:29
2003.08.11
Печать таблицы


8-33233
bkv
2003-04-18 15:56
2003.08.11
Создание черно - белого TBitmap


6-33253
Def
2003-05-30 13:33
2003.08.11
Работа с модемом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский