我创建了一个自定义Panel Control,如下所示:
Namespace CustomPanelControl
Public Class CustomPanel
Inherits Panel
Public Sub New()
MyBase.New()
End Sub
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = &H20
Return cp
End Get
End Property
Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
'do nothing here
End Sub
Public Overrides Sub Refresh()
Parent.Invalidate(New Rectangle(Me.Location, Me.Size), True)
End Sub
Protected Sub InvalidateEx()
If Parent Is Nothing Then
Return
End If
Dim rc As New Rectangle(Me.Location, Me.Size)
Parent.Invalidate(rc, True)
End Sub
End Class
End Namespace
现在我需要使用它并让它淡入淡出。这是一个面板,包含媒体播放器上的典型播放,停止,FF,REW控制。就像Windows Player或VLC一样,我希望包含控件的面板在鼠标离开时淡出,在鼠标输入时淡入淡出。
我该怎么做? TIA!
答案 0 :(得分:2)
答案 1 :(得分:0)
Winforms没有任何机制。表单具有不透明度,但控件不具有。
你可以尝试作弊,方法是使用DrawToBitmap(...)
拍摄控件的快照,然后将位图放在控制区域上的无边框,无焦点形式,然后淡化不透明度值那里。
但是使用WinForms的任何解决方案都会变得有点hacky。这里的标准答案是考虑WPF或重新考虑您的动画要求。