CCD = rectCreateDC(32, 32)
Call DrawIconEx(CCD, 0, 0, mIcon, 0, 0, 0, 0, DI_NORMAL)
BitBlt CDC, .Left, .Top, .Width, .Height, CCD, 0, 0, vbSrcCopy
Конвертировать любой битмап в 32х битный. Может кто знает?
Собсно сабж. Проблема в следующем: допустим я кладу на один 32х битный контекст иконки (иконки разные: 1bpp - 32bpp), потом вырезаю по нему форму и на местах иконок, bpp которых не равно 32 отображаються абракадабры. Может кто знает какие API чтоб конвертонуть любой битмап в 32х битный?
Цитата: 12345678
Собсно сабж. Проблема в следующем: допустим я кладу на один 32х битный контекст иконки (иконки разные: 1bpp - 32bpp), потом вырезаю по нему форму и на местах иконок, bpp которых не равно 32 отображаються абракадабры. Может кто знает какие API чтоб конвертонуть любой битмап в 32х битный?
Что значит "кладу иконки на контекст", я не понял.
А что до преобразования битмапа - это просто. Создаем битмап такого же размера с нужной глубиной цвета (CreateDIBSection) и копируем в него исходный битмап (BitBlt).
Цитата: homa.andy
Что значит "кладу иконки на контекст", я не понял..
Рисую значит.
Цитата: homa.andy
А что до преобразования битмапа - это просто. Создаем битмап такого же размера с нужной глубиной цвета (CreateDIBSection) и копируем в него исходный битмап (BitBlt)
Такой метот не катит, я так уже когда то пробывал - ровно ничего не изменилось.
Цитата: 12345678
Такой метот не катит, я так уже когда то пробывал - ровно ничего не изменилось.
А что должно было измениться? Если новый битмап создается с глубиной цвета 32, а исходный был с глубиной цвета 1, то картинка внешне останется такой же, но будет иметь формат 32 бита. Как раз то, что вы и просили, нет?
Код:
или так:
Код:
Call DrawIconEx(CDC, .Left, .Top, mIcon, .Width, .Height, 0, 0, DI_NORMAL)
CCD - промежуточный контекст, в котором я рисую каждую иконку, а потом копирую его в контекст, по которому вырежу форму - CDC. Результат в первом листинге и во втором идентичен. А вункция BitBlt видимо копирует байты такими, какими они есть, просто ставит их в битмап на нужные места.