参考如下:
透明的Form上顯示背景透通圖來源:cww這是一個很奇特的功能,首先要讓Form變透明,接著,放一張背景透明的.gif圖進來,
如此,這變成一個透明的form,上面有許多Button,且圖不會是一個方形,而會讓圖
的背景透通。
但有一點要注意,這種透明的Form不可以移動,否則一移就會發現它似乎不是透明的,
這個很不好解釋,建議您一開始設定Form的BorderStyle = 2 大小可變可移動,而去移
動與更動小大,便可以知道。因此,在設計階段時,一定要設BorderStyle = 0 沒有框
線,這樣子您的Form才不會有問題。
首先我使用以下的程式碼令Form變透明註:有適當的軟體(如 MS PhotEditor)可以將圖變成背景透通(引用 老怪之言)Me.AutoRedraw = True
hBitmap = CreateCompatibleBitmap(Me.hdc, 0, 0)
SelectObject Me.hdc, hBitmap
Me.Refresh
而透明的圖形呢,那需要那一種背景透通性的.GIF檔,在Form上放一個Image Control,將
圖放到Image Control,那就OK了
'需一個Image Control , 一個Command1
Option Explicit
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private hBitmap As LongPrivate Sub Command1_Click()
Unload Me
End SubPrivate Sub Form_Load()
'事先請設form的BorderStyle = 0 沒有框線
Me.AutoRedraw = True
Set Image1.Picture = LoadPicture("e:\bubbles.gif") '請自行找一個背景透明的圖
hBitmap = CreateCompatibleBitmap(Me.hdc, 0, 0)
SelectObject Me.hdc, hBitmap
Me.Refresh
End SubPrivate Sub Form_Unload(Cancel As Integer)
DeleteObject hBitmap
End Sub
 

解决方案 »

  1.   

    用SetWindowRgn设置窗体的显示区域
    SetWindowRgn VB声明 
    Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long 
    说明 
    这是那些很难有人注意到的对编程者来说是个巨大的宝藏的隐含的API函数中的一个。本函数允许您改变窗口的区域。
    通常所有窗口都是矩形的——窗口一旦存在就含有一个矩形区域。本函数允许您放弃该区域。这意味着您可以创建圆的、星形的窗口,也可以将它分为两个或许多部分——实际上可以是任何形状 
    返回值 
    Long,执行成功为非零值,失败为0 
    参数表 
    参数 类型及说明 
    hWnd Long,将设置其区域的窗口 
    hRgn Long,将设置的区域的句柄,一旦设置了该区域,就不能使用或修改该区域句柄,也不要删除它 
    bRedraw Boolean,若为TRUE,则立即重画窗口 
    注解 
    为区域指定的所有坐标都以窗口坐标(不是客户坐标)表示,它们以整个窗口(包括标题栏和边框)的左上角为起点
     
      

  2.   

    SetWindowRgn 
    是可以的,还有就是使用Alpha效果直接把窗体给搞透明,而且可以控制透明度!