Pendule analogique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 224 fois - Téléchargée 30 fois

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

Ajouter un commentaire Commentaires
Messages postés
406
Date d'inscription
lundi 2 décembre 2002
Statut
Membre
Dernière intervention
25 janvier 2014

tu fait comment pour numeroter les lignes ?
Utilisateur anonyme
Tu pourrais aussi créer une constante pour la valeure de PI pasque la lol ^^

au cas ou dans les déclarations, tu déclare ca :

Private Const PI as Long = 3.14159265358979

Et tu remplace partout la valeur numérique par PI
Messages postés
212
Date d'inscription
jeudi 13 novembre 2003
Statut
Membre
Dernière intervention
6 avril 2006

Pour le cadrant tu prend un 2ème timer et tu fait

private sub timer2_timer()
timer2.enabled = false

DrawWidth = 1

'le cadran un angle de 6° pour 1 sec
For j = 1 To 60
s1 = Sin((6 * j) * 3.14159265358979 / 180) * 1100
c1 = Cos((6 * j) * 3.14159265358979 / 180) * 1100
s2 = Sin((6 * j) * 3.14159265358979 / 180) * 1200
c2 = Cos((6 * j) * 3.14159265358979 / 180) * 1200
Form1.Line (2000 + s1, 900 + 1100 - c1)-(2000 + s2, 800 + 1200 - c2), vbBlack
Next
End sub

Pense aussi à mettre la proprité de la form Autoredraw à True.

Mais c'est aussi la 1000 source de ce type sur vbfrance...

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.