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
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.