Как вывести bmp картинку с прозрачным фоном?
От: Аноним  
Дата: 09.06.10 12:02
Оценка:
Пишу для WM6.
Сейчас рисую картинку стандартно:
StretchBlt(hdc,
sx, sy, sw, sh,
hdcImage,
x, y,
dx, dy,
SRCCOPY);
Соответственно одна картинка накладывается на другую фоновую, без прозрачности накладываемой.
Во всех накладываемых картинках есть черный фон.
Возможно ли сделать прозрачность накладываемых картинок заменяя их черный фон на те пиксели на которые накладывается картинка. Т.е. черные пиксели заменить на пиксели картинки на которую накладывается искомая.
Спасибо.
Re: Как вывести bmp картинку с прозрачным фоном?
От: Йожыгофф  
Дата: 15.06.10 12:03
Оценка:
Надо сделать еще одну картинку "маску". Где в качестве маски будет ваш черный фон. Налаживаем маску. потом картинку.
---
Док.
Re[2]: Как вывести bmp картинку с прозрачным фоном?
От: AnarchyMob Россия  
Дата: 06.08.10 19:50
Оценка:
Здравствуйте, Йожыгофф, Вы писали:

Й>Надо сделать еще одну картинку "маску". Где в качестве маски будет ваш черный фон. Налаживаем маску. потом картинку.


Используйте функцию AlphaBlend только битмап обязательно должен быть 32 битный. Через SHLoadImageFile битмап грузится с 16 битный, а из ресурсов можно загружать 32 битные битмапы функцией LoadBitmap.
Re: Как вывести bmp картинку с прозрачным фоном?
От: Nokin  
Дата: 17.08.10 08:50
Оценка:
Я для таких же целей использую TransparentBlt, только у меня заменяются не черные пиксели, а красные, но разницы нет.
Re[3]: Как вывести bmp картинку с прозрачным фоном?
От: b_monkey Беларусь  
Дата: 26.08.10 06:20
Оценка:
Здравствуйте, AnarchyMob, Вы писали:

AM>Здравствуйте, Йожыгофф, Вы писали:


Й>>Надо сделать еще одну картинку "маску". Где в качестве маски будет ваш черный фон. Налаживаем маску. потом картинку.


AM>Используйте функцию AlphaBlend только битмап обязательно должен быть 32 битный. Через SHLoadImageFile битмап грузится с 16 битный, а из ресурсов можно загружать 32 битные битмапы функцией LoadBitmap.


начиная с CE5.0 поддерживаются очень нужные интерфейсы:
IID_IImagingFactory
IImage
IBitmapImage
IImagingFactory

у IImagingFactory интерфейса есть метод CreateBitmapFromImage который поддерживает кучу разных форматов загрузки например (PixelFormat32bppARGB, PixelFormat32bppPARGB) после того как получите картинку можете использовать AlphaBlend. Работает намного быстрее чем если вы будете делать маску по цвету и выводить Blt функциями (True Mask алгоритм например). AlphaBlend будет корректно работать даже если background фон будет с градиентом.

сначала CreateImageFromFile, потом этот самый Image передаёте в CreateBitmapFromImage, ну да если погуглить то можно и сразу загрузку найти
WBR,
vitaly voloshin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.