Montre avec aiguilles

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 515 fois - Téléchargée 20 fois

Contenu du snippet

c'une montre à aiguilles (dll)

Source / Exemple :


Imports System.Windows.Forms
Imports System.Windows.Forms.Timer
Imports System.Drawing

Public Class Montre

    Inherits System.Windows.Forms.UserControl

    Const PI = 3.14159

    Enum ListeFormeContour

        Rectangle
        Carre
        Cercle
        Elipse

    End Enum

    Private MaTimer As New Timer

    Private Montre_Enabled As Boolean = True

    Private Contour_Visible As Boolean = True
    Private Contour_Widh As Single = 3
    Private Contour_Couleur As Color = Color.Black
    Private Contour_Forme As ListeFormeContour

    Private Heures_Widh As Single = 3
    Private Heures_Couleur As Color = Color.Black

    Private Minutes_Widh As Single = 3
    Private Minutes_Couleur As Color = Color.Black

    Private Secondes_Widh As Single = 2
    Private components As System.ComponentModel.IContainer
    Private Secondes_Couleur As Color = Color.Red

    Private Sub Montre_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        AddHandler MaTimer.Tick, AddressOf MaTimer_Tick
        MaTimer.Interval = 999
        MaTimer.Start()

    End Sub

    Private Sub Montre_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

        Dim PointCentre As New Point(Me.Width / 2, Me.Height / 2)
        Dim P_Heure As New Point
        Dim P_Minute As New Point
        Dim P_Seconde As New Point

        Dim Min As Integer = Math.Min(Me.Width, Me.Height)

        Dim TrueHours = Hour(Date.Now) + Minute(Date.Now) / 60

        P_Heure.X = 0.75 * (Min / 2) * Math.Cos(PI / 180 * (30 * TrueHours - 90)) + Me.Width / 2
        P_Heure.Y = 0.75 * (Min / 2) * Math.Sin(PI / 180 * (30 * TrueHours - 90)) + Me.Height / 2

        P_Minute.X = 0.85 * (Min / 2) * Math.Cos(PI / 180 * (6 * Minute(Date.Now) - 90)) + Me.Width / 2
        P_Minute.Y = 0.85 * (Min / 2) * Math.Sin(PI / 180 * (6 * Minute(Date.Now) - 90)) + Me.Height / 2

        P_Seconde.X = 0.95 * (Min / 2) * Math.Cos(PI / 180 * (6 * Second(Date.Now) - 90)) + Me.Width / 2
        P_Seconde.Y = 0.95 * (Min / 2) * Math.Sin(PI / 180 * (6 * Second(Date.Now) - 90)) + Me.Height / 2

        If Contour_Visible = True Then

            Dim Gauche As Integer = 0
            Dim Hauteur As Integer = 0

            If (Me.Width - Me.Height) / 2 < 0 Then
                Gauche = 0
                Hauteur = (Me.Height - Me.Width) / 2
            Else
                Gauche = (Me.Width - Me.Height) / 2
                Hauteur = 0
            End If

            Select Case Me.Contour_Forme

                Case ListeFormeContour.Rectangle
                    e.Graphics.DrawRectangle(New Pen(Me.Contour_Couleur, Me.Contour_Widh), New Rectangle( _
                    Me.Width * 0.01, Me.Height * 0.01, Me.Width * 0.98, Me.Height * 0.98))

                Case ListeFormeContour.Carre
                    e.Graphics.DrawRectangle(New Pen(Me.Contour_Couleur, Me.Contour_Widh), New Rectangle( _
                    (Min * 0.01) + Gauche, (Min * 0.01) + Hauteur, Min * 0.98, Min * 0.98))

                Case ListeFormeContour.Cercle
                    e.Graphics.DrawEllipse(New Pen(Me.Contour_Couleur, Me.Contour_Widh), New Rectangle( _
                    (Min * 0.01) + Gauche, (Min * 0.01) + Hauteur, Min * 0.98, Min * 0.98))

                Case ListeFormeContour.Elipse
                    e.Graphics.DrawEllipse(New Pen(Me.Contour_Couleur, Me.Contour_Widh), New Rectangle( _
                    Me.Width * 0.01, Me.Height * 0.01, Me.Width * 0.98, Me.Height * 0.98))

            End Select

        End If

        e.Graphics.DrawLine(New Pen(Me.Heures_Couleur, Me.Heures_Widh), PointCentre, P_Heure)
        e.Graphics.DrawLine(New Pen(Me.Minutes_Couleur, Me.Minutes_Widh), PointCentre, P_Minute)
        e.Graphics.DrawLine(New Pen(Me.Secondes_Couleur, Me.Secondes_Widh), PointCentre, P_Seconde)

    End Sub

    Private Sub MaTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)

        Me.Refresh()

    End Sub

#Region "Proprietés"

    Public Property MontreEnabled() As Boolean

        Get
            If Me.IsHandleCreated Then
                Return Montre_Enabled
            Else
                Return True
            End If
        End Get

        Set(ByVal value As Boolean)

            Me.Montre_Enabled = value

            If Me.Montre_Enabled = False Then
                Me.MaTimer.Stop()
            Else
                Me.MaTimer.Start()
            End If

        End Set

    End Property

    Public Property HeuresCouleur() As Color

        Get
            If Me.IsHandleCreated Then
                Return Heures_Couleur
            Else
                Return Color.Black
            End If
        End Get

        Set(ByVal value As Color)
            Me.Heures_Couleur = value
        End Set

    End Property

    Public Property HeuresWidh() As Single

        Get
            If Me.IsHandleCreated Then
                Return Me.Heures_Widh
            Else
                Return 3
            End If
        End Get

        Set(ByVal value As Single)
            If value < 0 Or value > 5 Then
                MsgBox("Veuillez saisir une valeur comprise entre 0 et 5")
            Else
                Me.Heures_Widh = value
            End If

        End Set

    End Property

    Public Property MinutesCouleur() As Color

        Get
            If Me.IsHandleCreated Then
                Return Me.Minutes_Couleur
            Else
                Return Color.Black
            End If
        End Get

        Set(ByVal value As Color)
            Me.Minutes_Couleur = value
        End Set

    End Property

    Public Property MinutesWidh() As Single

        Get
            If Me.IsHandleCreated Then
                Return Me.Minutes_Widh
            Else
                Return 2
            End If
        End Get

        Set(ByVal value As Single)
            If value < 0 Or value > 5 Then
                MsgBox("Veuillez saisir une valeur comprise entre 0 et 5")
            Else
                Me.Minutes_Widh = value
            End If

        End Set

    End Property

    Public Property SecondesCouleur() As Color

        Get
            If Me.IsHandleCreated Then
                Return Me.Secondes_Couleur
            Else
                Return Color.Red
            End If
        End Get

        Set(ByVal value As Color)
            Me.Secondes_Couleur = value
        End Set

    End Property

    Public Property SecondesWidh() As Single

        Get
            If Me.IsHandleCreated Then
                Return Me.Secondes_Widh
            Else
                Return 1
            End If
        End Get

        Set(ByVal value As Single)
            If value < 0 Or value > 5 Then
                MsgBox("Veuillez saisir une valeur comprise entre 0 et 5")
            Else
                Me.Secondes_Widh = value
            End If

        End Set

    End Property

#Region "Contour"

    Public Property ContourCouleur() As Color

        Get
            If Me.IsHandleCreated Then

                Return Me.Contour_Couleur

            Else
                Return Color.Black
            End If
        End Get

        Set(ByVal value As Color)
            Me.Contour_Couleur = value
        End Set

    End Property

    Public Property ContourWidh() As Single

        Get
            If Me.IsHandleCreated Then
                Return Me.Contour_Widh
            Else
                Return 3
            End If
        End Get

        Set(ByVal value As Single)
            If value < 1 Or value > 5 Then
                MsgBox("Veuillez saisir une valeur comprise entre 1 et 5")
            Else
                Me.Contour_Widh = value
            End If

        End Set

    End Property

    Public Property ContourVisible() As Boolean

        Get
            If Me.IsHandleCreated Then
                Return Contour_Visible
            Else
                Return True
            End If

        End Get

        Set(ByVal value As Boolean)
            Contour_Visible = value
        End Set

    End Property

    Public Property ContourForme() As ListeFormeContour

        Get
            If Me.IsHandleCreated Then
                Return Contour_Forme
            Else
                Return ListeFormeContour.Cercle
            End If
        End Get

        Set(ByVal value As ListeFormeContour)
            Contour_Forme = value
        End Set

    End Property

#End Region

#End Region

  
   

End Class

Conclusion :


J'attends vos suggestions -:)
(c'est 1er projet)

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
13 avril 2010

je te donne plus de compléments si tu reviens,des commentaires sur msn et de recommandations sur netlog super maher j'ai toujours su que tu es (as)de premier fois quand j'ai vu tes yeux........ bonn continuation je t'attend.....
Messages postés
5
Date d'inscription
vendredi 16 juillet 2004
Statut
Membre
Dernière intervention
1 février 2009

:)Merci TOUPIC, j'attend plus que des compléments, des commentaires et des recommandations.
De même TBBUIM1 (oui c bien ca).
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Horloge analogique quoi...
Messages postés
18
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
27 janvier 2011

Pas de commentaire, joli boulot 10/10

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.