Horloge analogique .net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 796 fois - Téléchargée 30 fois

Contenu du snippet

Cette fois en version .Net :)

Si ca pt aider qqn ...

Source / Exemple :


'Les importations:

   Imports System.Drawing.Drawing2D

'Les déclarations générales:

   Public Horloge As New Timer()

'Le Sub New:

   Public Sub New()
      MyBase.New()
       'Cet appel est requis par le Concepteur Windows Form.
      InitializeComponent()
      ' double buffering pour eviter les scintillements
      SetStyle(ControlStyles.DoubleBuffer Or ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint, True)
		
      AddHandler Horloge.Tick, AddressOf HorlogeCount
      Horloge.Interval = 1000
      Horloge.Start()

      'Ajoutez une initialisation quelconque après l'appel InitializeComponent()

    End Sub

'La fonction du timer:

   Private Sub HorlogeCount(ByVal myObject As [Object], ByVal myEventArgs As EventArgs)
      PictureBox1.Invalidate()
   End Sub

'La Sub Picturebox1.paint:

	Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
                                'anti aliasing
		e.Graphics.SmoothingMode = SmoothingMode.AntiAlias
		Dim cPen1 As New Pen(Color.Maroon, 3)
		Dim cPen2 As New Pen(Color.MidnightBlue, 5)
		Dim cPen3 As New Pen(Color.Orange, 1)
		Dim Dt As DateTime = Now
		Dim Minutes As Integer = Dt.Minute - 15
		Dim Secondes As Integer = Dt.Second - 15
		Dim Heures As Integer = Dt.Hour - 3
		Dim CentreX As Integer = 50 + 50
		Dim CentreY As Integer = 50 + 60
		Dim X As Integer
		Dim Y As Integer
		'minutes
		X = CentreX + Math.Cos(Minutes * (Math.PI / 30)) * 40
		Y = CentreY + Math.Sin(Minutes * (Math.PI / 30)) * 40
		e.Graphics.DrawLine(cPen1, CentreX, CentreY, X, Y)
		'heures
		X = CentreX + Math.Cos(Heures * (Math.PI / 6)) * 30
		Y = CentreY + Math.Sin(Heures * (Math.PI / 6)) * 30
		e.Graphics.DrawLine(cPen2, CentreX, CentreY, X, Y)
		Dim bRect1 As New Rectangle(50, 60, 100, 100)
		Dim bRect2 As New Rectangle(45 + 50, 45 + 60, 10, 10)
		Dim bPen As New Pen(Color.Gray, 5)
		Dim bPen2 As New Pen(Color.White, 2)
		Dim bBrush As New SolidBrush(Color.Orange)
		e.Graphics.DrawEllipse(bPen, bRect1)
		e.Graphics.FillEllipse(bBrush, bRect2)
		e.Graphics.DrawEllipse(bPen2, bRect2)
		bBrush.Dispose()
		bPen.Dispose()
		'secondes
		X = CentreX + Math.Cos(Secondes * (Math.PI / 30)) * 40
		Y = CentreY + Math.Sin(Secondes * (Math.PI / 30)) * 40
		e.Graphics.DrawLine(cPen3, CentreX, CentreY, X, Y)
		cPen1.Dispose()
		cPen2.Dispose()
		cPen3.Dispose()

Conclusion :


Voila voilou :)

Si ca px vous servir :)

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
vendredi 14 août 2009
Statut
Membre
Dernière intervention
17 novembre 2009

qqqq
Messages postés
2
Date d'inscription
dimanche 28 janvier 2007
Statut
Membre
Dernière intervention
5 septembre 2007

ça donne un bon truc ki va m servir en tt ca
merci pr la source lumesh
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
2
Ca donne quoi le code une fois corrigé ?
Messages postés
144
Date d'inscription
lundi 13 octobre 2003
Statut
Membre
Dernière intervention
21 décembre 2014

héhé, pas mal du tout, cette horloge! mais... pourquoi heure-3, minute-15, seconde-15? il eu suffit d'une bonne utilisation des sin cos pour corriger ce décalage: (inverser sin et cos, double négation sur le cos)
X = centre + rayon * sin(angle)
Y = centre - rayon * cos(-angle)
c'étatit la minute des maths, merci :)
Messages postés
564
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
7 novembre 2008

G oublié le End Sub a la fin de la sub de la picturebox1.paint

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.