下面可以绘出任意一个形状的窗体,但是一条龙过分了一些:Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As LongPrivate Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As LongPrivate Sub Form_Load()Show 'The form!SetWindowRgn hWnd, CreateEllipticRgn(0, 0, 300, 200), TrueEnd Sub上述代码可以创建一个椭圆形状的窗口

解决方案 »

  1.   


    不过,我还有办法,那就是下面,你可以选定一条龙的图像作背景(移动式还是方的)透明的窗体(From)上显示背景透通图 
    首先要让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 
      

  2.   

    就是有关rgn的操作,作成黑白图象,然后...
      

  3.   

    要做到全图形化的窗体,其实只需要一个图片就可以了。背景色可以自己指定,不过看清楚以下过程!扫描图片(简单的按行扫描就可以)
    当扫到一行的某一部分全部是背景的时候,就CreateRgn这一片区域,
    然后用 Comb..Rgn 把这片区域从窗体区域中扣出来
    然后继续扫描扫描完成后,所有背景色就都被去掉了,窗体就是预想的样子了。代码挺麻烦的,而且不好调。不过现成的例子很多,CSDN大本营里原来我就见过。
    你可以找找。