Horlege avec aiguilles améloiré

yusufheri Messages postés 11 Date d'inscription mardi 14 janvier 2014 Statut Membre Dernière intervention 17 janvier 2014 - 16 janv. 2014 à 18:49
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 24 janv. 2014 à 20:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/100357-horlege-avec-aiguilles-ameloire

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
Modifié par NHenry le 24/01/2014 à 20:54
Bonsoir,

J'ai regardé ta source, elle montre quelques points pas terrible, mais peut servir pour la formation :
"Horlege avec aiguilles améloiré" Déjà rien que le titre ... se relire est une base ...
Ensuite, la source :
- L'image semble retouchée sur Paint pour effacer les aiguilles de l'image d'origine, dans ce cas, soit tu fais ta propre image (caler 12 nombres en cercle, c'est pas dur, même sous paint), soit tu mets le crédit de ta source.
- L'image a été modifiée ensuite pour être dimensionnée de manière "plus appropriée" en la rectanganlarisant ne donnant pas un bon rendu.
- Les aiguilles ne sont même pas centrées (dû à l'image ? )
- L'aiguille des heures ne s'avance que par à coup, donc, pas de progression linéaire durant l'heure comme une vraie horloge.
- Certaines parties de code montrent que tu ne maitrises pas le formatage des nombres :
        If heure < 10 Then
heures = "0" + heure.ToString
Else
heures = heure.ToString
End If
Au lieu d'un simple :
heures=heure.ToString("00")

- Pas de Option Strict, alors que c'est la base de la programmation récente.

- Variables globales alors qu'elles pourraient être locales :
Public Class Form1
...
Dim heures As String
Dim minutes As String
Dim secondes As String
...
Sub Montre()
Dim heure As Integer = System.DateTime.Now.Hour
If heure < 10 Then
heures = "0" + heure.ToString
Else
heures = heure.ToString
End If
Dim minute As String = System.DateTime.Now.Minute.ToString
If minute < 10 Then
minutes = "0" + minute.ToString
Else
minutes = minute.ToString
End If
Dim seconde As String = System.DateTime.Now.Second
If seconde < 10 Then
secondes = "0" + seconde.ToString
Else
secondes = seconde.ToString
End If
Me.Text = heures + ":" + minutes + ":" + secondes
End Sub
....
End Class

- Pour terminer le tour rapide, ton timer de rafraichissement des aiguilles étant réglé sur 60 secondes, cela fait que si je lance le programme à xx:xx:30, l'aiguilles des minutes (et celle des heures aussi) ne se déplacera que toutes les 60 secondes, donc décalée de 30 secondes par rapport à l'horloge.


Bref, source à améliorer.
karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016
17 janv. 2014 à 14:59
hey salut yusuf

je voix que tu as enfin publié la source, je vais essayer cette source des que j de temps :)
j publié une source déjà existant ( voir ca sur la liste des sources )

http://codes-sources.commentcamarche.net/forum/affich-10017589-horloge-code-existe-ici-modifie#p10017589

Cordialement
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 17/01/2014 à 13:23
Salut

Active "Option Explicit" et "Option Strict" et corrige tes erreurs
pi c'est math.pi pas besoin de const
pour les secondes comme pour les minutes
manque me.invalidate dans l'event timer2_tick
pourquoi 2 timer
timer1 et montre() servent à rien
au lieu de g = Me.CreateGraphics()
g = e.Graphics
Rejoignez-nous