I want to add a picture to the actual form and then make a certain color from the picture transparent. I have got code to make this work but it will only work with .bmp added to form, but obviously makes the final program huge in size
Please see attached picture.
Example
It makes color "0, 0, 255" transparent, but i need it to do the same thing with a .jpg image..
Please help.
Kal
The code i have is:
"Form code"
Code:Dim g_nTransparency As Integer Dim color As Long Dim flag As Byte Private Sub Form_load() On Error GoTo ErrorRtn color = RGB(0, 0, 255) flag = 0 If chkcolor.Value = 1 Then flag = flag Or LWA_COLORKEY If chkAlpha.Value = 1 Then flag = flag Or LWA_ALPHA 'value between 0 and 255 g_nTransparency = txtTransparency.Text If g_nTransparency < 0 Then g_nTransparency = 0 If g_nTransparency > 255 Then g_nTransparency = 255 Me.Show SetTranslucent2 Me.hWnd, color, g_nTransparency, flag Exit Sub ErrorRtn: MsgBox Err.Description & " Source : " & Err.Source 'initialize txtTransparency.Text = 150 g_nTransparency = 150 Me.Show End Sub
"API Module"
Code:Option Explicit Public Const LWA_COLORKEY = 1 Public Const LWA_ALPHA = 2 Public Const LWA_BOTH = 3 Public Const WS_EX_LAYERED = &H80000 Public Const GWL_EXSTYLE = -20 Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal color As Long, ByVal X As Byte, ByVal alpha As Long) As Boolean Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
"Misc Module"
I am sure this code could be simplified also, this code requires 2 checkboxes and a textbox with the transparency value, in order to work.Code:Option Explicit Sub SetTranslucent(ThehWnd As Long, nTrans As Integer) On Error GoTo ErrorRtn 'SetWindowLong and SetLayeredWindowAttributes are API functions, see MSDN for details Dim attrib As Long attrib = GetWindowLong(ThehWnd, GWL_EXSTYLE) SetWindowLong ThehWnd, GWL_EXSTYLE, attrib Or WS_EX_LAYERED SetLayeredWindowAttributes ThehWnd, RGB(255, 255, 0), nTrans, LWA_ALPHA Exit Sub ErrorRtn: MsgBox Err.Description & " Source : " & Err.Source End Sub Sub SetTranslucent2(ThehWnd As Long, color As Long, nTrans As Integer, flag As Byte) On Error GoTo ErrorRtn 'SetWindowLong and SetLayeredWindowAttributes are API functions, see MSDN for details Dim attrib As Long attrib = GetWindowLong(ThehWnd, GWL_EXSTYLE) SetWindowLong ThehWnd, GWL_EXSTYLE, attrib Or WS_EX_LAYERED 'anything with color value color will completely disappear if flag = 1 or flag = 3 SetLayeredWindowAttributes ThehWnd, color, nTrans, flag Exit Sub ErrorRtn: MsgBox Err.Description & " Source : " & Err.Source End Sub


Reply With Quote


Bookmarks