Как мне исчезнуть и исчезнуть пользовательский элемент управления панели в vb.net - PullRequest
3 голосов
/ 07 февраля 2012

Я создал пользовательский элемент управления Panel следующим образом:

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, я хочу, чтобы панель, содержащая элементы управления, исчезала при отпускании мыши и исчезала при вводе мыши.

Как мне это сделать?ТИА!

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

посмотрите на это: AlphaGradientPanel Из CodeProject

SCREENSHOT

0 голосов
/ 07 февраля 2012

Winforms не имеет никакого механизма для этого.Формы имеют непрозрачность, а элементы управления - нет.

Вы можете попробовать обман , сделав снимок вашего элемента управления с помощью DrawToBitmap(...), а затем поместив растровое изображение в бесфокусную форму без фокуса надот области управления, затем уменьшите значение непрозрачности оттуда.

Но любое решение, использующее WinForms, получится немного хакерским.Стандартный ответ здесь - подумать о WPF или пересмотреть ваши требования к анимации.

...