Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Конвертировать любой битмап в 32х битный. Может кто знает?

5.1K
07 сентября 2007 года
12345678
93 / / 16.12.2006
Собсно сабж. Проблема в следующем: допустим я кладу на один 32х битный контекст иконки (иконки разные: 1bpp - 32bpp), потом вырезаю по нему форму и на местах иконок, bpp которых не равно 32 отображаються абракадабры. Может кто знает какие API чтоб конвертонуть любой битмап в 32х битный?
31K
07 сентября 2007 года
homa.andy
6 / / 06.09.2007
Цитата: 12345678
Собсно сабж. Проблема в следующем: допустим я кладу на один 32х битный контекст иконки (иконки разные: 1bpp - 32bpp), потом вырезаю по нему форму и на местах иконок, bpp которых не равно 32 отображаються абракадабры. Может кто знает какие API чтоб конвертонуть любой битмап в 32х битный?



Что значит "кладу иконки на контекст", я не понял.

А что до преобразования битмапа - это просто. Создаем битмап такого же размера с нужной глубиной цвета (CreateDIBSection) и копируем в него исходный битмап (BitBlt).

5.1K
08 сентября 2007 года
12345678
93 / / 16.12.2006
Цитата: homa.andy
Что значит "кладу иконки на контекст", я не понял..



Рисую значит.


Цитата: homa.andy
А что до преобразования битмапа - это просто. Создаем битмап такого же размера с нужной глубиной цвета (CreateDIBSection) и копируем в него исходный битмап (BitBlt)



Такой метот не катит, я так уже когда то пробывал - ровно ничего не изменилось.

31K
08 сентября 2007 года
homa.andy
6 / / 06.09.2007
Цитата: 12345678
Такой метот не катит, я так уже когда то пробывал - ровно ничего не изменилось.



А что должно было измениться? Если новый битмап создается с глубиной цвета 32, а исходный был с глубиной цвета 1, то картинка внешне останется такой же, но будет иметь формат 32 бита. Как раз то, что вы и просили, нет?

5.1K
08 сентября 2007 года
12345678
93 / / 16.12.2006
Хм, странно. У меня ето не работает. Делаю так:

 
Код:
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


или так:

 
Код:
Call DrawIconEx(CDC, .Left, .Top, mIcon, .Width, .Height, 0, 0, DI_NORMAL)


CCD - промежуточный контекст, в котором я рисую каждую иконку, а потом копирую его в контекст, по которому вырежу форму - CDC. Результат в первом листинге и во втором идентичен. А вункция BitBlt видимо копирует байты такими, какими они есть, просто ставит их в битмап на нужные места.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог