![]() |
|
|
![]()
|
|
| kvv999 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 4.11.2008 Репутация: нет Всего: нет |
Изображение содержится в массиве байт.
Глубина цвета 8 бит. Градации серого.
Сама по себе картинка отображается корректно, но не верно по масштабу. Получается в несколько раз меньше чем битмап. Не пойму в чем дело?... Так же пробовал GDI+
Корректно работает только в случае, если (width % 4 == 0). Если же ширина картинки не кратна 4, ничего толкового не выходит. Как правильно отобразить картинку любой ширины? Палитру тут тоже видимо надо свою делать? PixelFormat8bppIndexed - по цветам не годиться конечно, только по размеру. Может есть другой вариант? ЗЫ Благодарен за помощь =) |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Нужно соблюдать выравнивание. Строки в битмапе должны быть выровнены, насколько я помню, на 2 байта, а в DIB Section - на 4 байта. Переформируй массив построчно.
И не понятно, почему ты создаешь совместимый битмап, тогда как у тебя явно сказано - 8 битный. Совместимый - это значит такой же цветности как исходный. Кроме того, размер растра, передаваемый в SetBitmapBits должна быть в байтах, т.е. width*height (width с учетом выравнивания). -------------------- ... |
|||
|
||||
| kvv999 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 4.11.2008 Репутация: нет Всего: нет |
да... с CreateCompatibleBitmap напартачил...
Таким образом, верный вариант будет таким:
...и все дело в выравнивании массива... Пошел ровнять... ))) Это сообщение отредактировал(а) kvv999 - 27.8.2009, 14:15 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |