Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Загрузка BMP |
Автор: KAPJICOH 25.9.2007, 21:44 | ||
Не могу загрузить BMP файл. Вот код:
Битмап загружается, но я не могу присоединить его к устройству. Может кто-нибудь сталкивался с этой проблемой? Спасибо. |
Автор: Alexeis 26.9.2007, 09:32 |
странный метод вычисления размера растра. Правильно будет LineSize = (bih.biWidth * 3 +3) / 4 * 4; Мы же выравниваем на 4 байта. Например, если длинна строки 257 байт, то она выравнивается на 3 байта до 260 байт Строчка bih.biWidth + bih.biWidth%4 никак не выравнивает строку на границу 4х байт. Кроме того сам размер тоже должен быть выравнен на границу 4х байт. BitsSize = ((bih.biWidth * 3 +3) / 4 * 4 * bih.biHeight + 3) / 4 * 4; |
Автор: Earnest 26.9.2007, 11:13 |
Не проще, так как в общем случае строки bmp-файла и битмапа имеют неодинаковую длину: первые выровнены на 4 байта, а вторые - на 2. KAPJICOH, Здесь куча мест, где можно допустить ошибку. И на форуме такие темы обсуждались, и кода примеры были, работающего. Поищи... в сто двадцать пятый раз искать в чем кривизна загрузки битмапа ей богу лень. ![]() |
Автор: Mihhail 26.9.2007, 12:07 | ||
В данном случае это ни как не проявляется. Идёт побайтная загрузка всего блока растровых данных. Выравнивание учитывается позже, при вызове функции SetDIBits. |
Автор: KAPJICOH 26.9.2007, 13:37 | ||
Сколько не искал всегда натыкался на функцию LoadBitmap. Битмап создается, но привязать его к устройству не получается, как проверить правильность загрузки битмапа? |
Автор: KAPJICOH 26.9.2007, 14:07 | ||
Все основная задача - вывести на экран решена. Вот код кому интересно:
Всем спасибо! |
Автор: Alexeis 26.9.2007, 15:44 |
А как же LoadImage()? Она как раз грузит битмап из файла и создает битмап. |
Автор: KAPJICOH 26.9.2007, 18:41 | ||
По условию надо все это делать самому. Наверное я само задание криво объяснил)) |