WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  HDC

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   HDC
SUnteXx опубликован 23-11-2001 17:42 MSK   Click Here to See the Profile for SUnteXx   Click Here to Email SUnteXx  
Как в HDC задать количество отображаемого цвета, т.е. у нас картинка на 32 бита, а нам надо ее отобразить в 8! Вроде бы можно задать количество цвета в HDC для отображения! Просто не хочится трогать картинку (не хочется ее переводить из 32->8), вдруг пригодится!
DmitryRyvkin опубликован 24-11-2001 01:37 MSK     Click Here to See the Profile for DmitryRyvkin  Click Here to Email DmitryRyvkin     
На сколько я знаю ( во всяком случае я так работаю ) все не совсем так.
Во-первых, DC не хранит информацию о цвете вообще, эту информацию
хранит битмэп, который в нее выбран ( он выбран обязательно, например при создании
CreateCompatibleDC в нее автоматом выбирается 1*1 ч/б битмэп. Поэтому
надо просто загрузить битмап по скажем LoadBitmap и выбрать его
в DC (dc.SelectObject (&myBitmap)). Все. Кстати насчет картинки можно не беспокоится,
загрузится все что можно и отображено тоже будет все хорошо. Win позаботится.
Во- всяком случае, у меня с этим проблем не было.
А у тебя, раз есть HDC, грузиш битмэп и выбираеш в HDC (если не на MFC)
SelectObject (hdc, HBITMAP)
SUnteXx опубликован 28-11-2001 00:20 MSK     Click Here to See the Profile for SUnteXx  Click Here to Email SUnteXx     
2DmitryRyvkin: Я работаю в Вынь32АПИ без МФЦ.
Вы говорите "... грузишь битмап ...", а я никак не могу загрузить битмап! Я его беру из Клипбоарда!

Как тогда можно переконвертировать битмапу (32b->8b)?

Подскажите кто как может!

Заранее благодарен,
SUnteXx

DmitryRyvkin опубликован 28-11-2001 06:54 MSK     Click Here to See the Profile for DmitryRyvkin  Click Here to Email DmitryRyvkin     
Во - первых MFC тут не причем, LoadBitmap есть в GDI,
вообще, мфц в 99 % случаев просто представляет АПИ в удобоваримом
виде, не более.
Во вторых, вопрос действительно неоднозначен. Для начала давайте
оговоримся, что именно мы обсуждаем, чтоб не было моя - твоя - не понимает.
Итак к примеру. Беру bmp 24 бит (32 ?), гружу в ACDSee. Хорошо.
Включаю в системе 256 цветов (8 бит ). Становится не супер, но вобщем,
смотреть можно. Теперь пытаюсь написать прогу, грузящую этот битмэп
и показывающую его (совершенно не важно как , можно и из
ClipBoard ). Смотрю . Цвета - ужаааасные. Все какое- то серо - бело-
сине - черное. Очень мало цветов. Дела именно так у вас обстоят ?
Тогда да, вопрос уходит в другую плоскость. Вот уж 2 часа разбираюсь, насколько
Обратите внимание. Если попросить ACDSee первести картинку из 24 бит в
8 бит бмп, а потом глянуть бмп, то вначале (почти)увидим любопытный кусочек
длиной 1024 байта. Как можно понять, ACDSee анализирует картинку, находит
наиболее часто встречающиеся цвета, составляет из них массив 256 цветов,
и пишет к заголовку битмэпа ( это не относится к высоким разрешениям).
Поэтому и картинка в итоге выходит приличная. Если попросить вин отобразить
ее в режиме 256 цветов, она будет использовать палитру по умолчанию
на 20 цветов со всеми вытекающими...
Те видимо, надо создавать палитру. Ето самый лучший выход, но придется сканировать
на ходу картинку, сортировать массив, вобщем тихий ужас. Есть имхо еще
вариант. Его ACDSee использует когда не переконвертирует, а просто отображает
картинку при режиме 256 цветов. Для этого, похоже, надо создать
более менее приличную палитру на 256 цветов и работать с ней.
Все остальное не подойдет, так как будут использованы стандартные 20 цветов.

Тут я не до конца разобрался, раньше никогда с палитрами не работал.
Послушаем, кто что еще скажет. Если ничего путного не услышим, продолжу
"исследования", а пока нет времени.
Хотя чую у вас начисто пропало желание делать субж.

DmitryRyvkin опубликован 28-11-2001 07:22 MSK     Click Here to See the Profile for DmitryRyvkin  Click Here to Email DmitryRyvkin     
Ну да , опять Америку открыл :)
Почитал тут, все так и есть. Есть еще любопытныя ф- ция CreateDIBitmap, но неохота
с ней разбираться, да и вряд ли поможет

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.