Aujourd'hui je vais vous faire un tutoriel sur:
1. Modifier la couleur d'une progressbar
2.Créer sa progressbar personnalisée
Et bien c'est parti pour la partie 1
1. Modifier la couleur d'une progressbar
Petite précision: le rendu de cette première partie n'est pas très esthétique (du moins à mon gout :p)
Pour commencer (si ce n'est pas déjà fait) créez un nouveau projet:
Puis allez dans les paramètres du projet et décochez la case suivante:
Maintenant ajoutez une progressbar et un bouton sur votre form:
Ajoutez aussi un Timer (pas besoin de screen )
Pour les événements, je vais mettre un minimum de screen
Dans l'événement "Click" du bouton, ajoutez l'action "Démarrer un minuteur" qui se trouve dans la catégorie "Minuteur". Dans le minuteur à démarrer, vous prenez "Me.Timer1" (évidemment ).
Maintenant, créez une nouvelle variable se nommant.... ba comme vous voulez
Moi je l'appellerai "MaVar" parce-que sa fait joli
Puis dans l'évenement "Tick" du Timer1, et bien voila un beau code VB avec pleins de commentaires :
- Code:
MaVar = Me.ProgressBar1.Value 'Notre variable est égale à la propriété value de la progressbar1
Me.ProgressBar1.Value = MaVar + 5 'La valeur de la progressbar1 est égale à la valeur de MaVar + 5
If Me.ProgressBar1.Value = "50" Then 'Si la valeur de la progressbar est égale à 50 alors...
Me.ProgressBar1.ForeColor = Color.Red '... la couleur de notre progressbar est rouge
Else 'Sinon...
'On ne fait rien
EndIf 'Ne pas oublier le EndIf sinon il y aura une erreur!
If Me.ProgressBar1.Value = "100" Then 'Si la valeur de la progressbar est égale à 100 (donc au maximum) alors...
Me.Timer1.Stop 'On arrête le timer sinon il y aura une erreur (car la valeur d'une progressbar ne peut pas être 105)
Else 'Sinon...'
'On ne fait rien
EndIf 'Ne pas oublier le EndIf sinon il y aura une erreur!
Voila le résultat (fais avec Visual Basic car j'ai eu un problème avec SZ en cours de route )
Avant 50% :
Après 50% :
Bon voila; comme je l'ai dit, ce n'est pas très joli tout sa hein^^
Vous vous voulez faire une progressbar à la manière launcheur World Of Warcraft hein x)
Et bien c'est le sujet de la 2ème partie!
2. Créer sa progressbar personnalisée
Pour cette 2ème partie vous devez posséder Visual Studio (peu importe la version). Évidemment version Visual Basic^^ et un logiciel de dessin (optionnel mais recommandé (paint fera l'affaire )), j'utiliserai Photoshop
On va commencer par notre logiciel de dessin
1. Le dessin!
Ouvrez votre logiciel et créez une image de la taille de votre contrôle utilisateur.
Dans votre image, mettez ce que vous voulez
Moi j'ai fait ça:
Et voila c'est tout pour le logiciel de dessin
2. Microsoft Visual Basic 2010 Express (ou non)
Créez un nouveau projet (je vais pas faire de screenshot, vous êtes assez grand xD )
Dans ce projet, nous aurons besoin de:
-une windows form
-un contrôle utilisateur (User Control)
Redimensionnez votre contrôle utilisateur de façon à ce que sa ressemble à une progressbar normale
Modifiez sa couleur de fond, puis ajoutez une PictureBox que vous remplirez avec la couleur de votre choix ou alors vous mettrez l'image qu'on viens de faire dans la partie 1 (Le dessin).
Dans ce cas là, il faut mettre la propriété "BackgroundImageLayout" de la picturebox sur "None".
Allez c'est parti! La partie code! Je tiens à préciser que je n'expliquerais pas le code car je ne le comprends pas spécialement et personne sur les sites où je l'ai trouvé ne l'explique^^
Let's go!
Double-cliquez sur votre Contrôle utilisateur (pour voir le code) puis déclarez les variables init (integer = 0); max (integer = 100);
- Code:
Dim init As Integer = 0
Dim max As Integer = 100
Puis sautez une ligne et tapez:
- Code:
Sub setinit()
PictureBox1.Width = (Me.Width / max) * init
End Sub
- Code:
Property value As Integer
Get
- Code:
Property value As Integer
Get
End Get
Set (ByVal value As Integer)
End Set
End Property
- Code:
Return init
- Code:
init = value
setinit()
Non je blague c'est pas fini (mais on approche de la fin!)
Allez on continue!
Sous le End Property, vous ajoutez:
- Code:
Property maximum As Integer
Get
- Code:
Property maximum As Integer
Get
End Get
Set (ByVal maximum As Integer)
End Set
End Property
Entre le "Get" et le "End Get", vous vous en doutez je suppose, vous entrez:
- Code:
Return max
- Code:
max = value
Et pour vérifier si vous avez tout bien marqué :
- Code:
Public Class UserControl1
Dim init As Integer = 0
Dim max As Integer = 100
Sub setinit()
PictureBox1.Width = (Me.Width / max) * init
End Sub
Property value As Integer
Get
Return init
End Get
Set(ByVal value As Integer)
init = value
setinit()
End Set
End Property
Property maximum As Integer
Get
Return max
End Get
Set(ByVal value As Integer)
max = value
End Set
End Property
End Class
Créez un événement "Resize" pour votre Contrôle utilisateur dans lequel vous entrerez:
- Code:
setinit
Maintenant générez votre projet.
Maintenant retournez sur votre form et regardez dans la boite à outils.... MAGIE! Un nouvel outil est apparu: votre progressbar. Moi elle s'appelle UserControl1 vu que je n'ai pas changé le nom du contrôle utilisateur quand je l'ai créé...
Si vous ne la trouvez pas, et bien ne désespérez pas! Elle se trouve dans la catégorie "Composants WindowsApplication1" (WindowsApplication1 est le nom de mon projet!).
Maintenant sur votre form, ajoutez votre progressbar personnalisée et un bouton. Mettez aussi un Timer. Quand on clique sur le bouton:
- Code:
Timer1.Start
- Code:
Me.maprogressbar1.value += 1
Et là vous allez me dire: "On a fait tout ça pour une progressbar utilisable uniquement sur Visual Basic, et dans ce projet???" Et bien oui! Alors où est l’intérêt? Et bien vous pouvez faire ça à la fin de votre projet sur SZ. Quand vous avez tout fini, vous exportez votre projet sur Visual Studio et vous remplacez toutes les progressbar par une progressbar personnalisée
Et voila, ce tuto est fini!
J'éspère qu'il vous aura plu
Dites-moi ce que vous en pensez (en sachant que c'est mon premier tuto que j'écrit^^)...
Bonne journée avec votre progressbar
P.S: je ferai peut-être un tuto pour pouvoir mettre votre progressbar en .dll mais ce sera plus tard
Dernière édition par softewarzatorman le Mar 3 Sep 2013 - 15:24, édité 1 fois