Soyez le premier à donner votre avis sur cette source.
Vue 9 997 fois - Téléchargée 695 fois
Option Strict On Option Explicit On Imports System.ComponentModel Imports System.Drawing.Drawing2D Public Class BarGraphe #Region "Variable local" Private mNiveau As Integer = 0 'niveau courant du bargraphe Private mCouleurBasGris As Color = Color.FromArgb(&HFF00A500) 'couleur des bars du bas éteintes Private mCouleurBas As Color = Color.FromArgb(&HFF00FF00) 'couleur des bars du bas allumées Private mCouleurMilieuGris As Color = Color.FromArgb(&HFFA5A500) 'couleur des bars du milieu éteintes Private mCouleurMilieu As Color = Color.FromArgb(&HFFFFFF00) 'couleur des bars du milieu allumées Private mCouleurHautGris As Color = Color.FromArgb(&HFFA50000) 'couleur des bars du haut éteintes Private mCouleurHaut As Color = Color.FromArgb(&HFFFF0000) 'couleur des bars du haut allumées Private mBloquage As Boolean = True 'indique s'il y a maintiend du niveau max Private mTempMaintiend As Integer = 30 'temps du maintiend du niveau max Private Pique As Integer = 28 'valeur courante du niveau max Private Maintiend As Integer #End Region #Region "Propriété" <Description("Niveau de BarGraph, de 0 à 1000"), Category("Etat")> _ Property Niveau() As Integer Get Return mNiveau End Get Set(ByVal value As Integer) Select Case value Case Is < 0 mNiveau = 0 Case Is > 1000 mNiveau = 1000 Case Else mNiveau = value End Select Timer1.Enabled = mBloquage Invalidate() End Set End Property <Description("Active le maintiend du niveau max"), Category("Etat")> _ Property Bloquage() As Boolean Get Return mBloquage End Get Set(ByVal value As Boolean) Timer1.Enabled = value mBloquage = value Invalidate() End Set End Property <Description("Temps de maintiend du niveau max, en centième de seconde"), Category("Etat")> _ Property TempMaintiend() As Integer Get Return mTempMaintiend End Get Set(ByVal value As Integer) mTempMaintiend = value Invalidate() End Set End Property <Description("Couleur des bars du bas éteintes en ARGB"), Category("Apparence")> _ Property CouleurBasGris() As Color Get Return mCouleurBasGris End Get Set(ByVal value As Color) mCouleurBasGris = value Invalidate() End Set End Property <Description("Couleur des bars du bas allumées en ARGB"), Category("Apparence")> _ Property CouleurBas() As Color Get Return mCouleurBas End Get Set(ByVal value As Color) mCouleurBas = value Invalidate() End Set End Property <Description("Couleur des bars du milieu éteintes en ARGB"), Category("Apparence")> _ Property CouleurMilieuGris() As Color Get Return mCouleurMilieuGris End Get Set(ByVal value As Color) mCouleurMilieuGris = value Invalidate() End Set End Property <Description("Couleur des bars du milieu allumées en ARGB"), Category("Apparence")> _ Property CouleurMilieu() As Color Get Return mCouleurMilieu End Get Set(ByVal value As Color) mCouleurMilieu = value Invalidate() End Set End Property <Description("Couleur des bars du haut éteintes en ARGB"), Category("Apparence")> _ Property CouleurHautGris() As Color Get Return mCouleurHautGris End Get Set(ByVal value As Color) mCouleurHautGris = value Invalidate() End Set End Property <Description("Couleur des bars du haut allumées en ARGB"), Category("Apparence")> _ Property CouleurHaut() As Color Get Return mCouleurHaut End Get Set(ByVal value As Color) mCouleurHaut = value Invalidate() End Set End Property #End Region #Region "fonction local" Private Sub BarGraphe_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'affiche l'image du bargraphe dans le picture box au chargemeent du control End Sub Private Sub BarGraphe_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint Dim Niv As Integer Dim i As Integer Dim BrushDraw As New SolidBrush(Color.FromArgb(0)) Dim objBitMap2 As New Bitmap(20, 172) Dim objGraphics2 As Graphics = Graphics.FromImage(objBitMap2) '+++++++++++++++++preparation de l'image tempon+++++++++++++++++ objGraphics2.Clear(Color.Black) '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Niv = ((-28 * mNiveau) \ 1000) + 28 'calcule du nb de bar a afficher a 65% For i = 0 To 27 If i < Niv Then '++++++++++++++++++++++affichage de bar éteinte+++++++++++++++ Select Case i Case Is < 6 'rouge a 65% BrushDraw.Color = mCouleurHautGris Case 6 To 11 'Jaune a 65% BrushDraw.Color = mCouleurMilieuGris Case Else 'vert a 65% BrushDraw.Color = mCouleurBasGris End Select objGraphics2.FillRectangle(BrushDraw, 3, i * 6 + 3, 14, 4) Else '+++++++++++++++++affichage de bar allumé++++++++++++++++++ Select Case i Case Is < 6 'rouge a 100% BrushDraw.Color = mCouleurHaut Case 6 To 11 'Jaune a 100% BrushDraw.Color = mCouleurMilieu Case Else 'vert a 100% BrushDraw.Color = mCouleurBas End Select objGraphics2.FillRectangle(BrushDraw, 3, i * 6 + 3, 14, 4) End If '++++++++++++++++gestion du pique+++++++++++++++++++++++++++ If mBloquage Then If i = Pique Then Select Case Pique Case Is < 6 'rouge a 100% BrushDraw.Color = mCouleurHaut Case 6 To 11 'Jaune a 100% BrushDraw.Color = mCouleurMilieu Case Else 'vert a 100% BrushDraw.Color = mCouleurBas End Select objGraphics2.FillRectangle(BrushDraw, 3, i * 6 + 3, 14, 4) End If End If '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Next '+++affichage du bargraphe dans le picturebox et liberation de l'image tempon++++++ picBarGraphe.Image = objBitMap2 '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ End Sub Private Sub BarGraphe_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize 'redimensionnement du picture box en meme temps que le control picBarGraphe.Width = Me.Width - 5 picBarGraphe.Height = Me.Height - 5 End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 'calcule et generation des piques Dim tNiveau As Integer tNiveau = ((-28 * mNiveau) \ 1000) + 28 If Pique > tNiveau Then Pique = tNiveau Maintiend = mTempMaintiend Else If Maintiend = 0 Then If Pique <> 28 Then Pique += 1 Maintiend = 0 End If Else Maintiend -= 1 End If End If If Pique = 28 Then Timer1.Enabled = False End If Invalidate() End Sub Private Sub BarGraphe_VisibleChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.VisibleChanged 'quand il est pas visible on coupe les timers Timer1.Enabled = Me.Visible End Sub #End Region End Class
2 avril 2010 à 00:15
http://www.vbfrance.com/codes/CONTROL-UTILISER-PLUS-FACILEMENT-FMODEX-DLL_51542.aspx
28 mars 2010 à 19:29
http://www.vbfrance.com/codes/AMELIORATION-VU-METRE-LUCIOL44_51519.aspx
@++
28 mars 2010 à 18:25
Merci a++
28 mars 2010 à 18:15
Private Sub BarGraphe_VisibleChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.VisibleChanged
'quand il est pas visible on coupe les timers
Timer1.Enabled = Me.Visible
End Sub
ou sans d'ailleur (fonction supprimée)
je tombe à 1% de cpu, mais à chaque fois que la form est cachée le fichier d'échange monte !
je bosse dessus....
28 mars 2010 à 18:04
8% utilisation maxi de la cpu, en revanche le fichier d'échange monte à plus de 300mo (de 700 à 1Go chez moi) lorsque la form est caché et ce en dent de scie.
étrange....
Pour finir revois ta form principal car chez moi elle fonctionne, mais avec un plantage sur le designer.
une fois compilé c'est OK
amélioration pour le Vbar :
redimensionnement complet, pas seulement la hauteur
nombre de colonne réglable, ici 20 mais si j'ai que 10 bandes de fréquences ?
Bon boulot, continu.
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.