Pendule analogique

Contenu du snippet

Très simple et pédagogique, pour ceux qui comme moi débute en VB, et cherche des exemples pas trop compliqué. C'est une pendule analogique qui récupère l'heure de Windows et la transforme via une formule, en coordonnées pour les aiguilles.
toutes les critiques sont le bien venu

Source / Exemple :


Dim i As Integer
Dim heure As Integer
Dim couleur As ColorConstants

Private Sub Form_Load()
    Form1.BackColor = &H808080
    'activation du timer
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Cls
heure = 1

'affiche l'heure digital
Label1.Caption = Mid(Format(Time, "hh:mm:ss"), 1)

      'le cadran un angle de 6° pour 1 sec
      For i = 1 To 60
                  
            s1 = Sin((6 * i) * 3.14159265358979 / 180) * 1100
            c1 = Cos((6 * i) * 3.14159265358979 / 180) * 1100
            s2 = Sin((6 * i) * 3.14159265358979 / 180) * 1200
            c2 = Cos((6 * i) * 3.14159265358979 / 180) * 1200
            
            'l'épaisseur et la couleur des traits du cadran  par defaut
            DrawWidth = 1
            couleur = vbWhite
            
            'l'épaisseur et la couleur des traits pour les heures
            If (i / 5 = heure) Then
            DrawWidth = 2
            couleur = vbYellow
            heure = heure + 1
            End If
            
            'l'épaisseur et la couleur des traits pour les quarts
            If (i = 60 Or i = 15 Or i = 30 Or i = 45) Then
            couleur = vbYellow
            DrawWidth = 3
            End If
            
            'affichage les traits du cadran avec la couleur  par defaut
            Form1.Line (2000 + s1, 900 + 1100 - c1)-(2000 + s2, 800 + 1200 - c2), couleur
      Next
            
      'la taille et les coordonnées de l'aiguille des secondes
      DrawWidth = 1
       
            s = Sin((6 * Second(Time)) * 3.14159265358979 / 180) * 1000
            c = Cos((6 * Second(Time)) * 3.14159265358979 / 180) * 1000
            Form1.Line (2000, 2000)-(2000 + s, 1000 + 1000 - c), vbRed
            
      'la taille et les coordonnées de l'aiguille des minutes
      DrawWidth = 3
   
            s = Sin((6 * Minute(Time)) * 3.14159265358979 / 180) * 1000
            c = Cos((6 * Minute(Time)) * 3.14159265358979 / 180) * 1000
            Form1.Line (2000, 2000)-(2000 + s, 1000 + 1000 - c), vbWhite
            
      'la taille et les coordonnées de l'aiguille des heures
      DrawWidth = 5
        
            s = Sin((30 * Hour(Time)) * 3.14159265358979 / 180) * 700
            c = Cos((30 * Hour(Time)) * 3.14159265358979 / 180) * 700
            Form1.Line (2000, 2000)-(2000 + s, 700 + 1300 - c), vbYellow
End Sub

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.