Прозрачность картинки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Прозрачность картинки

Сообщение Don Leno » 01.03.2015 (Вс) 13:39

К примеру есть картинка (цветная) и вторая черно-белая (альфа маска). Вопрос в том, как преобразовать картинку по альфа маске(черные участки - прозрачность)?
Гуглил, яндексил , но не могу найти вроде простой пример. Однажды видел описание на сайте gcup, но сейчас там статьи этой в помине нет.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Прозрачность картинки

Сообщение Хакер » 01.03.2015 (Вс) 13:53

Да здесь на форуме миллион раз это обсуждалось. И с GDI+, и с FoxCBmp.dll, и куча ручных реализаций. В поиск!
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Прозрачность картинки

Сообщение Mikle » 01.03.2015 (Вс) 15:14

Don Leno писал(а):как преобразовать картинку по альфа маске

Что значит "преобразовать"? Добавить в картинку альфаканал, который взять из RGB другой картинки?

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Прозрачность картинки

Сообщение Don Leno » 01.03.2015 (Вс) 19:20

да именно! я об этом)))

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Прозрачность картинки

Сообщение Хакер » 01.03.2015 (Вс) 19:21

Картинка где есть? В файле? Надо файл изменить? Файл какого формата?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Прозрачность картинки

Сообщение Mikle » 01.03.2015 (Вс) 22:16

Don Leno писал(а):да именно! я об этом

На SR2D это шесть строк:
Код: Выделить всё
  Dim Spr1 As New SR2D_Sprite
  Dim Spr2 As New SR2D_Sprite

  Spr1.LoadFromFile "Color.jpg"
  Spr2.LoadFromFile "Alpha.jpg"
  Spr1.MoveByte Spr2, 0, 0, ChRed, ChAlpha
  Spr1.SaveToFile "Result.png", FF_ARGB_PNG

Предполагается, что "Color.jpg" - это картинка, "Alpha.jpg" - ЧБ картинка с альфаканалом, формат может быть не JPG, а любым, доступным через GDI+.

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Прозрачность картинки

Сообщение The trick » 01.03.2015 (Вс) 23:20

Тебе нужны полупрозрачные участки?
Если маска монохромная то для вывода можешь воспользоваться MaskBlt.
Если нужно смикшировать непосредственно в битмапе, то можно многими способами сделать (вручную, используя ColorMatrix из GDI+).
UA6527P

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Прозрачность картинки

Сообщение Don Leno » 02.03.2015 (Пн) 5:15

Mikle, The trick спасибо за ответы, вот та Апишка которую искал MaskBlt!!! Кстати Mikle спс, я знаю об этом движке, но хочется всего достичь своим умом, так сказать для понимания))))

У кого нить есть пример объявления этой Апи?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Прозрачность картинки

Сообщение Mikle » 02.03.2015 (Пн) 9:08

Don Leno писал(а):У кого нить есть пример объявления этой Апи?

В комплекте с VB6 ставится так же "Microsoft Visual Basic 6.0 Tools", там находится "API Text Viewer", там есть декларации API функций, а так же типов и констант, принятых в WinAPI.
Оттуда:
Код: Выделить всё
Public Declare Function MaskBlt Lib "gdi32" Alias "MaskBlt" (ByVal hdcDest As Long, ByVal nXDest As Long, ByVal nYDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long, ByVal dwRop As Long) As Long

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Прозрачность картинки

Сообщение Don Leno » 07.03.2015 (Сб) 17:41

еще раз огромное спасибо Mikle!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32

    TopList