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)
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.