怎么能让窗体透明而控件不透明从而达到如PS启动画面异型的羽毛窗体那样的效果?
我要的是窗体透明而控件不透明!谁能解决??

解决方案 »

  1.   

    PS启动画面异型的羽毛窗体用的是模拟的透明效果
    用的是截屏+图片合成技术:先将屏幕截下来,再将位图合并PS本来就是图像处理软件,Alpha通道的图像合成还不是小菜一叠
      

  2.   

    由于“透明”这个词的泛用
    导致透明窗口至少有4种不同的意思 1.异型窗口
    2.模拟透明
    3.Windows透明窗口
    4.分层窗口
      

  3.   

    那个我已经成功了~是模拟异型窗体……原来部成功的原因是颜色取值必须是VBwhite。现在重要的是怎么能让那幅图片淡入淡出……
      

  4.   

    Option Explicit  Const LWA_COLORKEY = &H1    Const LWA_ALPHA = &H2    Const GWL_EXSTYLE = (-20)    Const WS_EX_LAYERED = &H80000    Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long    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 SetLayeredWindowAttributes Lib "User32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
        Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
    Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long                                                  '  Note  that  if  you  declare  the  lpData  parameter  as  String,  you  must  pass  it  By  Value.
    Private Const HKEY_CURRENT_USER = &H80000001
    Private Const REG_DWORD = 4                                                '  32-bit  number
    Dim reg As LongPrivate Sub Form_Load()    Dim Ret As Long        'Set the window style to 'Layered'        Ret = GetWindowLong(Me.hwnd, GWL_EXSTYLE)        Ret = Ret Or WS_EX_LAYEREDSetWindowLong Me.hwnd, GWL_EXSTYLE, Ret        'Set the opacity of the layered window to 128        '我们可以设置这个数值来控制透明程度        SetLayeredWindowAttributes Me.hwnd, 0, 50, LWA_ALPHA
      

  5.   

    A:模拟透明。先截屏得到背景位图,再用AlphaBlend实现透明合成
    B:分层窗口。分层窗口可以直接设置窗口的透明度,只不过分层窗口只能用于Win2k以上
    C:调用AnimateWindow,但是效果不是很好
      

  6.   

    zhaopp(可怜的孩子)的代码就是“B:分层窗口”
      

  7.   

    先截屏得到背景位图,再用AlphaBlend实现透明合成
    然后不断重绘,注意设置透明合成的Alpha值