方法就是利用SetWindowLong設置圖片框的“風格”,使其包含WS_EX_LAYERED,然後再利用SetLayeredWindowAttributes來透明掉圖片框內的背景(必須是純色的)。
代碼如下:
'下面的代碼加到“通用?聲明”裏Private?Declare?Function?SetWindowLong?_
Lib?"user32"?Alias?"SetWindowLongA"?_
(ByVal?hwnd?As?Long,?ByVal?nIndex?As?Long,?_ByVal?dwNewLong?As?Long)?As?Long
Private?Declare?Function?GetWindowLong?_
Lib?"user32"?Alias?"GetWindowLongA"?_
(ByVal?lhWnd?As?Long,?_ByVal?nIndex?As?Long)?As?Long
Private?Declare?Function?SetLayeredWindowAttributes?_
Lib?"user32"?_
(ByVal?lhWnd?As?Long,?ByVal?crKey?As?Long,?_ByVal?bAlpha?As?Byte,?ByVal?dwFlags?As?Long)?As?Long
Private?Const?GWL_EXSTYLE?=?(-20)
Private?Const?WS_EX_LAYERED?=?&H80000
Private?Const?LWA_COLORKEY?=?&H1
'下面的代碼加到妳想透明的地方
'假設要透明的PictureBox為Pict1,背景色為白色
Dim?ws?As?Long
ws?=?GetWindowLong(Pict1.hWnd,?GWL_EXSTYLE)?Or?WS_EX_LAYERED
SetWindowLong?Pict1.hWnd,?GWL_EXSTYLE,?ws
'下面的vbWhite可以換成要透明的背景色
SetLayeredWindowAttributes?Pict1.hWnd,?vbWhite,?0,?LWA_COLORKEY