Montre avec aiguilles

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

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.