这行代码使表单透明“User32Wrappers.SetLayeredWindowAttributes(Me.Handle,0,_ 255 * 0.4,User32Wrappers.LWA.Alpha)“
如果我调整0.4到0.6,它将变得不那么透明。
我想知道我是否可以通过轨迹栏控制这个变量以及如何操作!
Public Class Form1
Private _InitialStyle As Integer
Private Sub Form_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load
Form2.Show()
' Grab the Extended Style information
' for this window and store it.
_InitialStyle = User32Wrappers.GetWindowLong(Me.Handle, User32Wrappers.GWL.ExStyle)
' Set this window to Transparent
' (to the mouse that is!)
SetFormToTransparent()
' Just for giggles, set this window
' to stay on top of all others so we
' can see what's happening.
Me.TopMost = True
End Sub
Private Sub SetFormToTransparent()
' This creates a new Extended Style
' for our window, which takes effect
' immediately upon being set, that
' combines the initial style of our window
' (saved in Form.Load) and adds the ability
' to be Transparent to the mouse.
' Both Layered and Transparent must be
' turned on for this to work AND have
' the window render properly!
User32Wrappers.SetWindowLong(Me.Handle, User32Wrappers.GWL.ExStyle, _
_InitialStyle Or User32Wrappers.WS_EX.Layered Or User32Wrappers.WS_EX.Transparent)
' Don't forget to set the Alpha
' for the window or else you won't be able
' to see the window! Possible values
' are 0 (visibly transparent)
' to 255 (visibly opaque). I'll set
' it to 20% visible here for show.
' The second parameter is 0, because
' we're not using a ColorKey!
User32Wrappers.SetLayeredWindowAttributes(Me.Handle, 0, _
255 * 0.4, User32Wrappers.LWA.Alpha)
End Sub
Private Sub SetFormToOpaque()
' Turn off the Transparent Extended Style.
User32Wrappers.SetWindowLong(Me.Handle, User32Wrappers.GWL.ExStyle, _
_InitialStyle Or User32Wrappers.WS_EX.Layered)
' Set the Alpha back to 100% opaque.
User32Wrappers.SetLayeredWindowAttributes(Me.Handle, _
0, 255, User32Wrappers.LWA.Alpha)
End Sub
Public Class User32Wrappers
Public Enum GWL As Integer
ExStyle = -20
End Enum
Public Enum WS_EX As Integer
Transparent = &H20
Layered = &H80000
End Enum
Public Enum LWA As Integer
ColorKey = &H1
Alpha = &H2
End Enum
<DllImport("user32.dll", EntryPoint:="GetWindowLong")> _
Public Shared Function GetWindowLong( _
ByVal hWnd As IntPtr, _
ByVal nIndex As GWL _
) As Integer
End Function
<DllImport("user32.dll", EntryPoint:="SetWindowLong")> _
Public Shared Function SetWindowLong( _
ByVal hWnd As IntPtr, _
ByVal nIndex As GWL, _
ByVal dwNewLong As WS_EX _
) As Integer
End Function
<DllImport("user32.dll", _
EntryPoint:="SetLayeredWindowAttributes")> _
Public Shared Function SetLayeredWindowAttributes( _
ByVal hWnd As IntPtr, _
ByVal crKey As Integer, _
ByVal alpha As Byte, _
ByVal dwFlags As LWA _
) As Boolean
End Function
End Class
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End
End Sub
End Class
答案 0 :(得分:1)
你完成了大部分工作!只需在表单中添加TrackBar,将Minimum设置为1,Maximum设置为100,并将以下代码添加到表单中:
Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
SetOpacity(TrackBar1.Value / 100)
End Sub
Private Sub SetOpacity(ByVal value As Single)
' Turn off the Transparent Extended Style.
User32Wrappers.SetWindowLong(Me.Handle, User32Wrappers.GWL.ExStyle, _
_InitialStyle Or User32Wrappers.WS_EX.Layered)
' Set the Alpha.
User32Wrappers.SetLayeredWindowAttributes(Me.Handle, _
0, 255 * value, User32Wrappers.LWA.Alpha)
End Sub