Милостивые государи! Умоляю, объясните снисходительно, как правильно получить битовый массив для указанного HBITMAP?!
Именно указалку на саму последовательность RGB-байт, без всего
прочего? Создаю битмап через CreateCompatibleBitmap для контекста,
полученного через CreateCompatibleDC, рисую на него, смотрю атрибуты пикселов через GetPixel- OK! Но вот получить поинтер ну никак не могу!дает через GetObject структ. BITMAP,все там верно,
только bmBits=NULL. Пытаюсь дернуть в буфер через GetBIBits-не работает, даже BITMAPINFO при нул-поинтере буфера не заполняет,
возвращает лишь убийственно круглый НОЛЬ! При попытке обращаться
к HBITMAP через дебаггер при переходе на адрес битмапа кажет '?',
читать с этого адреса не дает- ошибка доступа даже на чтение...
Делается все это на MSVC6, под Винным 2000.
ПАМАГИТЕ!!!!
Re: Получить битовый массив! Ни фига не выходит%-( ) ?
Здравствуйте Погуляй, Вы писали:
П>Милостивые государи! Умоляю, объясните снисходительно, как правильно получить битовый массив для указанного HBITMAP?! П>ПАМАГИТЕ!!!!
Здравствуйте Погуляй, Вы писали:
П>Милостивые государи! Умоляю, объясните снисходительно, как правильно получить битовый массив для указанного HBITMAP?! П>Именно указалку на саму последовательность RGB-байт, без всего П>прочего? Создаю битмап через CreateCompatibleBitmap для контекста, П>полученного через CreateCompatibleDC, рисую на него, смотрю атрибуты пикселов через GetPixel- OK! Но вот получить поинтер ну никак не могу!дает через GetObject структ. BITMAP,все там верно, П>только bmBits=NULL. Пытаюсь дернуть в буфер через GetBIBits-не работает, даже BITMAPINFO при нул-поинтере буфера не заполняет, П>возвращает лишь убийственно круглый НОЛЬ! При попытке обращаться П>к HBITMAP через дебаггер при переходе на адрес битмапа кажет '?', П>читать с этого адреса не дает- ошибка доступа даже на чтение... П>Делается все это на MSVC6, под Винным 2000. П>ПАМАГИТЕ!!!!
Скорее всего проблема в том что цветность hdc не соответсвует цветности той bmp из которой ты читаешь биты.
Например цветность экрана 16 бит. Получаем от него hdc при помощи GetDC(NULL). Создаем битмап с цветность 24 бита и рисуем на нем. При попытке вызова GetDIBits получаем 0.
Как решить эту проблему я не знаю. Поэтому просто следи за совпадением цветности
Re: Получить битовый массив! Ни фига не выходит%-( ) ?
Есть способ проще, чем вышеописанный, ИМХО.
Создавай битмап не ч\з CreateCompatibleBitmap, а через
CreateDIBSection(), тогда проблема с получением поинтера
исчезнет (т.к ты его получишь в момент создания битмапа),
как и проблема с глубиной цвета :)
Причем, в последствии, ф-ия BitBlt сама переконвертит
битмап в нужный формат...
Да, в параметре HDC советую передавать NULL (это для CreateDIBSection)