![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
KAPJICOH |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 18.4.2006 Репутация: нет Всего: нет |
Не могу загрузить BMP файл. Вот код:
Битмап загружается, но я не могу присоединить его к устройству. Может кто-нибудь сталкивался с этой проблемой? Спасибо. |
|||
|
||||
Mihhail |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: 5 Всего: 9 |
Здесь дело в несоответствии цветовой палитры и глубины цвета, картинки и контекста. Необходимо преобразование:
Может проще так? fread( arr, sizeof(BYTE), (bih.biWidth + bih.biWidth%4) * bih.biHeight * 3, file ); ![]() Это сообщение отредактировал(а) Mihhail - 26.9.2007, 09:21 |
||||
|
|||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
странный метод вычисления размера растра.
Правильно будет 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; Это сообщение отредактировал(а) Alexeis - 26.9.2007, 09:32 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Не проще, так как в общем случае строки bmp-файла и битмапа имеют неодинаковую длину: первые выровнены на 4 байта, а вторые - на 2. KAPJICOH, Здесь куча мест, где можно допустить ошибку. И на форуме такие темы обсуждались, и кода примеры были, работающего. Поищи... в сто двадцать пятый раз искать в чем кривизна загрузки битмапа ей богу лень. ![]() -------------------- ... |
|||
|
||||
Mihhail |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 13.9.2007 Репутация: 5 Всего: 9 |
В данном случае это ни как не проявляется. Идёт побайтная загрузка всего блока растровых данных. Выравнивание учитывается позже, при вызове функции SetDIBits. |
|||
|
||||
KAPJICOH |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 18.4.2006 Репутация: нет Всего: нет |
Сколько не искал всегда натыкался на функцию LoadBitmap. Битмап создается, но привязать его к устройству не получается, как проверить правильность загрузки битмапа? |
|||
|
||||
KAPJICOH |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 18.4.2006 Репутация: нет Всего: нет |
Все основная задача - вывести на экран решена. Вот код кому интересно:
Всем спасибо! |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
А как же LoadImage()? Она как раз грузит битмап из файла и создает битмап. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
KAPJICOH |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 18.4.2006 Репутация: нет Всего: нет |
По условию надо все это делать самому. Наверное я само задание криво объяснил)) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |