[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Наш сайт » Visual basic » Графика в vb. Функция BitBlt. Маска (Графика в vb. Функция BitBlt. Маска)
Графика в vb. Функция BitBlt. Маска
ilimДата: Пятница, 04.02.2011, 05:26 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 680
Награды: 17
Репутация: 4
Статус: Offline
Очень часто при работе с графикой нужно сделать прозрачный фон у картинки, т.к. фон картинки может не вписываться в фон формы(ил другого объекта). Можно конешно у формы сделать черный фон, и у рисунка, но будет все уродско.
А вот для создания картинки с прозрачным фоном нужно создать маску этой картинки, а у самой картинки сделать черный фон. Не будем далеко уходить, и возьмем мою фотку. Вместо зеленого фона, сделаем прозрачный. Начнем.
Для начала сделаем у картинки черный фон, и маску(белый фон, а сама картинка черная):

Картинка:

Маска

Для создания маски(и фона самой картинки) я использовал обычный Point(Программы>>Стандартные...), хотя намного удобнее будет в FhotoShope, ил др. граф. редакторах. При создании маски главное чтоб все изображение было черным.
Теперь перейдем к программной части, на форму кинь 2 Picture:
ScaleMode = 3-Pixel
AutoRedraw = True
Visible = False
У Picture1 Picture = "Маска.gif"
У Picture2 Picture = "Картинка.gif(только не просто картинка, а та что с черным фоном)"

Свойства Form1:
Scalemode = 3-Pixel
AutoRedraw = True

И кинь еще кнопку на форму, ОК?
Вот код:

' Объявляем API
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Sub Command1_Click()
' Рисуем маску на форме(с режимом vbSrcAnd)
BitBlt Form1.hDC, 0, 100, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture1.hDC, 0, 0, vbSrcAnd ' Рисуем саму картинку(с режимом vbSrcPaint)
BitBlt Form1.hDC, 0, 100, Picture2.ScaleWidth, Picture2.ScaleHeight, Picture2.hDC, 0, 0, vbSrcPaint
Form1.Refresh ' Обновляем форму
End Sub


www.ilim.kz
 
Форум » Наш сайт » Visual basic » Графика в vb. Функция BitBlt. Маска (Графика в vb. Функция BitBlt. Маска)
Страница 1 из 11
Поиск: