| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Работа прорамы под разными ОС |
| Автор: Nastya 11.9.2003, 20:47 |
| VC++ 6.0 Программа компилировалась и прекрасно работает в windows 98. Там есть кусочек, где считывается информация из *.bmp через LoadImage и выводится на экран. Все работате Эта же программа, запущенная из Windows Xp или 2000 показывает картинки с гараздо меньшим количеством цветов (этак 256 вместо приличного труеколора). Почему? Причем, картинка загруженная из ресурсов и отображенная также работает без проблем. |
| Автор: Gorbatovsky 12.9.2003, 09:01 |
| Я думаю, что это функция LoadImage или та, которая выводит на экран не корректно работают с цветом. |
| Автор: Nastya 12.9.2003, 09:45 |
| Я подозреваю, что это все-таки StrechBlt, может кто подскажет чем ее можно заменить |
| Автор: Baa 12.9.2003, 09:53 |
| А обязательно масштабирование картинки? Попробуй переносить другими функциями, типа BitBlt и т.д. Хотя, как мне кажется, проблема не в этом... |
| Автор: Nastya 12.9.2003, 10:52 |
| Да, маштабирование обязательно. Если не в этом, то в чем? |
| Автор: DENNN 12.9.2003, 11:54 |
| Возможно при отображении используестя режим не trueColor, а индексированные цвета? |
| Автор: mr.DUDA 12.9.2003, 17:09 | ||
Тогда можно пробовать получить текущую палитру с контекста, и по ней определять, индексированные цвета или нет. ИМХО, лучше было бы использовать COM-объект IPicture (есть во всех виндах, и прекрасно работает, используется самой ОС для открытия, отображения и сохранения всяких BMP, GIF, JPEG'ов; отлично документирован в MSDN). |
| Автор: Nastya 12.9.2003, 17:51 |
| Дело точно в StrechBlt, когда я вызываю эту функцию, но при этом картинку не растягиваю, а отображаю 1:1 все нормально (следовательно файл прочитался нормально и HBITMAP хранит все цвета как положено), а при растягивании или сжатии происходит искажение. Опять вопрос почему, и как с этим пборотся |
| Автор: DENNN 13.9.2003, 13:05 |
| Тогда приведи последний параметр StretchBlt (DWORD dwRop) - видимо нужно заменить его на другой, чтоб указать режим вычисления получающегося цвета. Кроме того посмотри справку по функциям SetStretchBltMode, MaskBlt и команду MAKEROP4 - думаю лишним не будет. |
| Автор: Nastya 14.9.2003, 17:37 |
| Все разабралась, SetStrechBltMode(HALFTONE); Спасибо DENNN, но я уже добралась до этого сама, кстати при таком режиме скорость отображения падает, так что прийдется еще помудрить над этим |