Horloge analogique .net

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

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.