Composant bar de volume

Description

C'est un composant .net 2005 qui ressemble au bar de volume qui sont dans tous les lecteurs audio/vidéo.
Ce code a deux intérêts:
-Tout d'abord il montre aux débutants comment créer des composants possédant des évènements et des propriétés personalisés.
-Il montre également comment utlisier des images transparentes pour les afficher aux dessus d'une autre grâce à un Panel.
-Il permet également de comprendre l'utilisation des buffers.
N'hésitez pas à laisser des commentaire pour toute remarque.

Source / Exemple :


Public Class VolumeBar
    Private rect As System.Drawing.Rectangle
    Private bufferG As BufferedGraphics
    Private color As Color
    Public Event Change_Value(ByVal value As Integer) 'Déclare l'évenement de changement de valeur
    Private pos As Integer 'C'est la position de la boule orange par rapport au Panel1
    Private Sub VolumeBar_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        pos = 50 'Par défault, le volume est au maximum
        bufferG = BufferedGraphicsManager.Current.Allocate(Panel1.CreateGraphics(), Panel1.DisplayRectangle)
    End Sub
    Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
        If e.Button <> Windows.Forms.MouseButtons.None Then 'si un bouton est appuyé...
            pos = e.Location.X - 4 '...alors on met à jour la variable qui
            ' contient la postion de la boule.Le -4 sert à centrer la boule par rapport à la souris
            If pos < 2 Then
                pos = 2 'Permet de ne pas sortir de la form à gauche
            ElseIf pos > 50 Then
                pos = 50 'Permet de ne pas sortir de la form à droite
            End If
            RaiseEvent Change_Value(value) 'Appel l'évènement change_value
            maj() 'Met à jour l'affichage du Panel1
        End If
    End Sub
    Private Sub maj()
        'définition du rectangle dans lequel doit s'afficher 
        'l'image correspondant au volume sélectioné (ici dégradé d'orange)
        rect.X = 4
        rect.Y = 0
        rect.Width = pos
        rect.Height = 15
        bufferG.Graphics.Clear(Drawing.SystemColors.Control)
        bufferG.Graphics.DrawImage(bg.Images.Item(0), 4, 0)
        'affichage l'image correspondant au volume sélectioné (ici dégradé d'orange)
        bufferG.Graphics.DrawImageUnscaledAndClipped(over.Images.Item(0), rect)
        'dessin de l'image transparente
        bufferG.Graphics.DrawImage(bar.Images.Item(0), pos, 1)
        bufferG.Render()
    End Sub
    Property value() As Integer
        Get
            value = Int((pos - 2) / 48 * 100) 'Définie la valeur du contrôl
        End Get
        Set(ByVal val As Integer) 'Permet de changer la valeur du contrôl
            pos = Int(val / 100 * 48 + 2) 'Change la position
            maj() 'Met à jour l'affichage du Panel1
        End Set
    End Property

    Private Sub VolumeBar_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        maj()
    End Sub
End Class

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.