Bienvenue dans les graphiques d'horloge graphiques Winforms, une bibliothèque de codes open source.
L'objectif principal de ce projet est de fournir des objets graphiques « de type horloge » pour les développeurs C# et VB.NET Winforms. la bibliothèque est principalement conçue pour les applications qui présentent des données calculées concernant les performances (tableau de bord des ventes d'une entreprise par exemple).
chaque objet horloge possède une variété de propriétés, utilisées pour la personnalisation, les horloges peuvent inclure une animation lors de l'actualisation ou du chargement.
Téléchargez la dernière version de BusinessClocks.dll sur votre ordinateur local.
Vous pouvez toujours trouver la dernière version dans la branche master du référentiel.
Chargez le .dll dans votre projet Winforms à l'aide de Visual Studio.
Instructions pour charger la DLL dans votre projet :
Using
(C#) ou Imports
(VB.NET) à l’espace de noms BusinessClocks.ExecutiveClocks
en haut du fichier Form1
.Form1
.Exemple de test C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BusinessClocks.ExecutiveClocks;
namespace WindowsFormsApplication19
{
public partial class Form1 : Form
{
private BusinessClocks.ExecutiveClocks.CarClock carClock;
private GoalsClock goalsClock;
private WaitClock waitClock;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
carClock = new BusinessClocks.ExecutiveClocks.CarClock(300, 150, 0.8F, true);
carClock.ShowInnerCutForPerformance = false;
carClock.BarBackColor = Color.Pink;
carClock.Create(true);
this.Controls.Add(carClock.ClockPanel);
goalsClock = new GoalsClock(200, 200, 0.8F);
goalsClock.Create(true);
goalsClock.Clock.Location = new Point(0, carClock.ClockPanel.Location.Y + carClock.ClockPanel.Height + 5);
this.Controls.Add(goalsClock.Clock);
waitClock = new WaitClock(150, 150, "Loading...");
waitClock.Clock.Location = new Point(0, goalsClock.Clock.Location.Y + goalsClock.Clock.Height + 5);
waitClock.LoadFont("ARIAL", 8, FontStyle.Regular);
waitClock.SetArrayColors(new Color[] { Color.FromArgb(0, 100, 100), Color.FromArgb(0, 136, 136), Color.FromArgb(0, 170, 170), Color.FromArgb(0, 204, 204) });
waitClock.OuterCircleWeight = 8;
waitClock.InnerCircleWeight = 5;
waitClock.Create(true);
this.Controls.Add(waitClock.Clock);
}
}
}
Exemple de test Visual Basic.NET
Imports BusinessClocks.ExecutiveClocks
Public Class Form1
Private carClock As BusinessClocks.ExecutiveClocks.CarClock
Private goalsClock As GoalsClock
Private waitClock As WaitClock
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' car clock (with precentage bar)
carClock = New BusinessClocks.ExecutiveClocks.CarClock(300, 150, 0.8, True)
carClock.ShowInnerCutForPerformance = False
carClock.BarBackColor = Color.Pink
carClock.Create(True)
Me.Controls.Add(carClock.ClockPanel)
' goals clock
goalsClock = New GoalsClock(200, 200, 0.8)
goalsClock.Create(True)
goalsClock.Clock.Location = New Point(0, carClock.ClockPanel.Location.Y + carClock.ClockPanel.Height + 5)
Me.Controls.Add(goalsClock.Clock)
' waitclock
waitClock = New WaitClock(150, 150, "Loading...")
waitClock.Clock.Location = New Point(0, goalsClock.Clock.Location.Y + goalsClock.Clock.Height + 5)
waitClock.LoadFont("ARIAL", 8, FontStyle.Regular)
waitClock.SetArrayColors(New Color() {Color.FromArgb(0, 100, 100), Color.FromArgb(0, 136, 136) _
, Color.FromArgb(0, 170, 170), Color.FromArgb(0, 204, 204)})
waitClock.OuterCircleWeight = 8
waitClock.InnerCircleWeight = 5
waitClock.Create(True)
Me.Controls.Add(waitClock.Clock)
End Sub
End Class
Remarque : toutes les horloges (WaitClock et CarClock pour l'instant) héritent de GoalsClock
Propriétés:
Clock:
Instance de l'objet graphique qui représente l'horloge, initialisée après l'appel Create()
.ClockWidth
: obtient ou définit la largeur de l'horloge.ClockHeight
: obtient ou définit la hauteur de l’horloge.xPos
et Ypos
: obtient la position x ou y du rectangle qui contient l'horloge.ClockBackGroundColor
: obtient ou définit la couleur d’arrière-plan de l’horloge.FontColor
: obtient ou définit la couleur de police du texte qui décrit le pourcentage PercentOfGoals
.ClockFont
: obtient ou définit la police du texte qui décrit le pourcentage PercentOfGoals. Veuillez noter:font
car le getter de cette propriété appelle la fonction LoadFont()
afin de calculer la taille et le style de police appropriés par rapport à la taille de l'horloge à l'aide d'un élément interne.LoadFont()
afin de réinitialiser la police.InnerCircleColor
: Obtient ou définit la couleur de l’arc intérieur.InnerCircleWeight
: obtient ou définit le poids en pixels (largeur) de l'arc intérieur.OuterCircleColor
: Obtient ou définit la couleur de l’arc extérieur.OuterCircleWeight
: obtient ou définit le poids en pixels (largeur) de l'arc extérieur.PercentOfGoals
: obtient ou définit la valeur de l'horloge. par exemple valeur de 0,1F = 10%, valeur de 0,5F = 50%, valeur de 1,1F = 110% etc...GoalsPercentDecimalValue
: obtient la valeur déciaml de l'horloge.Animate
(champ) : obtient ou définit une valeur indiquant si l'animation sera activée ou non.AnimationLength
: obtient ou définit la vitesse d'animation (milisec) en fonction de l'énumération AnimationLength : SuperFast = 1, Fast = 4, ModerateFast = 8, Moderate = 15, ModerateSlow = 28, Slow = 50, SuperSlow = 80.TimerInterval
: obtient ou définit l'intervalle de ticks pour la minuterie interne. la valeur recommandée est 4 (par défaut) pour accélérer le temps de rafraîchissement, utilisez une valeur inférieure.Méthodes :
Create(ByVal AnimateClock As Boolean)
: l'initialisation de l'objet horloge doit être appelée une fois que toutes les propriétés sont définies (les développeurs doivent noter : cette méthode est substituable/virtuelle).RefreshClock(ByVal AnimateClock As Boolean)
: Actualise et redessine les graphiques de l'objet horloge, appelez cette méthode après avoir modifié les propriétés (PercentOfGoals, InnerCircleColor par exemple). La plupart des propriétés d'horloge appelleront cette méthode lorsque leur valeur est modifiée. (développeurs, veuillez noter : cette méthode est Overridable / Virtual).LoadFont()
: renvoie la taille et le style de police appropriés par rapport à la taille de l'horloge en utilisant l'elgoritem interne.LoadFont()
afin de réinitialiser la police.Dispose()
: La méthode est implémentée à partir de l'interface IDisposable (dans l'assembly mscorlib.dll), lorsqu'elle est appelée, l'objet horloge sera supprimé et tous les objets GDI seront libérés de la mémoire.Propriétés:
ClockPanel
(champ) : à utiliser pour contenir l'objet Clock
si une barre de texte est requise. Important : Lorsque BaseBar = True
l'objet Clock
sera hébergé dans ClockPanel
afin de présenter une barre de texte de performance sous l'horloge.BaseBar = True
utilisez ce contrôle (et non la propriété Clock) pour obtenir l'horloge avec la barre de texte.BaseBar = False
n'utilisez jamais cette propriété, le résultat sera NullReferenceException
car elle ne sera pas initialisée (Veuillez lire le numéro 6 qui a été ouvert par l'utilisateur lordofscripts : #6). LowPerformance
: obtient ou définit l'indication de faibles performances, cette propriété est liée à la propriété LowPerFormanceColor et sa valeur définira la zone graphique de l'horloge à faibles performances avec la couleur LowPerFormanceColor .
MediumPerformance
: obtient ou définit l'indication des performances moyennes, cette propriété est liée à la propriété MediumPerFormanceColor et sa valeur définira la zone graphique de l'horloge des performances moyennes avec la couleur MediumPerFormanceColor .
HighPerformance
: Obtient ou définit l'indication de haute performance, cette propriété est liée à la propriété HighPerFormanceColor et sa valeur définira la zone graphique de l'horloge haute performance avec la couleur HighPerFormanceColor .
HighPerFormanceColor
: obtient ou définit la zone graphique haute performance dans l'horloge avec la couleur qui a été sélectionnée (liée à la propriété HighPerFormance
).
MediumPerFormanceColor
: obtient ou définit la zone de performances du support graphique dans l'horloge avec la couleur qui a été sélectionnée (liée à la propriété MediumPerformance
).
LowPerFormanceColor
: obtient ou définit la zone graphique de faibles performances dans l'horloge avec la couleur sélectionnée (liée à la propriété LowPerformance
).
NeedleBaseColor
: Obtient ou définit la couleur d’arrière-plan de la base de l’aiguille (aiguille de l’horloge).
NeedleBaseWeight
: obtient ou définit le poids en pixels (épaisseur) de la base de l'aiguille (aiguille de l'horloge).
NeedleOuterColor
: obtient ou définit la couleur d’arrière-plan de la zone extérieure de l’aiguille (aiguille de l’horloge).
NeedleOuterWeight
: obtient ou définit le poids en pixels (épaisseur) de la zone extérieure de l'aiguille (aiguille de l'horloge).
NeedleInnerColor
: Obtient ou définit la couleur d’arrière-plan de la zone intérieure de l’aiguille (aiguille de l’horloge).
NeedleInnerWeight
: obtient ou définit le poids en pixels (épaisseur) de la zone intérieure de l’aiguille (aiguille de l’horloge).
ShowInnerCutForPerformance
: obtient ou définit une valeur indiquant si la coupe interne visuelle (barre oblique) qui représente les performances sera dessinée au milieu de la bordure de l'horloge.
InnerCutPreformanceColor
: obtient ou définit la couleur de la coupe interne visuelle (slash) qui représente les performances au milieu de la bordure de l'horloge.
InnerCutPerformanceWeight
: obtient ou définit le poids (épaisseur) de la coupe interne (slash) qui représente les performances au milieu de la bordure de l'horloge.
BarFont
: obtient ou définit la police du texte qui décrit le pourcentage PercentOfGoals.
BarBackColor
: obtient ou définit la couleur d’arrière-plan de la barre de performances.
BarForeColor
: obtient ou définit la couleur de la police de la barre de performances.
BarValueDigitsForeColor
: Obtient ou définit la couleur de police des étiquettes max(100%) et min(0%) de la barre.
BarValueDigitsBackColor
: obtient ou définit la couleur d'arrière-plan des étiquettes max(100%) et min(0%) de la barre.
BarValueDigitsFont
: Obtient ou définit la police des étiquettes max(100%) et min(0%) de la barre.
Propriétés:
waitText
: Obtient ou définit le texte au milieu de l'horloge. Méthodes :
SetArrayColors(ByVal arrayOfColors() As Color)
: Définit une série de couleurs qui changeront après chaque rotation de 360 degrés. Le .dll est écrit en VB.NET.
Vous pouvez également l'utiliser avec des projets C#.
Deux exemples identiques sont ajoutés, pour C# et pour VB.NET.
Il s'agit d'un projet open source : Code Source
Nous utilisons SemVer pour le versioning.
La classe de base GoalsClock a un champ constant Version
: utilisez-le pour vérifier le numéro de version de la bibliothèque.
Cette section est encore en construction, dans peu de temps
Vous trouverez ici des explications et des exemples pour les développeurs qui souhaitent participer au projet et rédiger leurs propres diagrammes d'horloge.
WaitClock
pendant que l'application exécute une tâche longue en arrière-plan à l'aide de threadsExemple de code C# avec commentaires :
/*
**************************************************************************
* AUTHOR: Jonathan Applebaum *
* DESCRIPTION: An example that describes how to use WaitClock object *
* from another thread in order to execute a long task in the beckground *
* DATE: 06/01/2017 *
* ************************************************************************
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BusinessClocks.ExecutiveClocks;
namespace WindowsFormsApplication19
{
public partial class Form1 : Form
{
private WaitClock waitClock;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// show wait clock on a different thread until LongTask finish executing
System.Threading.Thread waitThread = new System.Threading.Thread(LoadWaitClock);
waitThread.Start();
// start a new thread to execute LongTask() parallel to the waitThread
System.Threading.Thread longTaskThread = new System.Threading.Thread(LongTask);
longTaskThread.Start();
}
// put the code of your task that you want to execute in the background in that method
private void LongTask()
{
// loop to represent a long task
for (int i = 0; i < 10; i++)
{
System.Threading.Thread.Sleep(1000);
}
// the "long task" inside the method finished to execute - dispose the wait clock from the GUI
panel1.Invoke(new Action(waitClock.Dispose));
// promt to screen
label1.Invoke(new Action(NotifyTaskHasFinished));
}
private void LoadWaitClock()
{
// use action delegate to update GUI changes from another thread
panel1.Invoke(new Action(AddClock));
}
private void AddClock()
{
// configure and initilize the clock
waitClock = new WaitClock(120, 120, "Loading...");
waitClock.ClockBackGroundColor = Color.White;
waitClock.FontColor = Color.Black;
waitClock.Clock.Location = new Point(5, 5);
waitClock.LoadFont("ARIAL", 8, FontStyle.Regular);
waitClock.SetArrayColors(new Color[] { Color.FromArgb(0, 100, 100), Color.FromArgb(0, 136, 136), Color.FromArgb(0, 170, 170), Color.FromArgb(0, 204, 204) });
waitClock.OuterCircleWeight = 8;
waitClock.InnerCircleWeight = 5;
waitClock.Create(true);
this.panel1.Controls.Add(waitClock.Clock);
}
private void NotifyTaskHasFinished()
{
label1.Text = "LongTask() method has finished";
}
}
}
Exemple de code Visual Basic.NET avec commentaires :
' **************************************************************************
' * AUTHOR: Jonathan Applebaum *
' * DESCRIPTION: An example that describes how To use WaitClock Object *
' * from another thread in order to execute a long task in the beckground *
' * DATE: 06/01/2017 *
' * ************************************************************************
Imports BusinessClocks.ExecutiveClocks
Public Class Form1
Private waitClock As WaitClock
Private Sub Form1_Load_1(sender As Object, e As EventArgs) Handles MyBase.Load
Dim waitThread As System.Threading.Thread = New System.Threading.Thread(AddressOf LoadWaitClock)
waitThread.Start()
Dim longTaskThread As System.Threading.Thread = New System.Threading.Thread(AddressOf LongTask)
longTaskThread.Start()
End Sub
Private Sub LongTask()
For i As Integer = 0 To 9
System.Threading.Thread.Sleep(1000)
Next
Panel1.Invoke(New Action(AddressOf waitClock.Dispose))
Label1.Invoke(New Action(AddressOf NotifyTaskHasFinished))
End Sub
Private Sub LoadWaitClock()
Panel1.Invoke(New Action(AddressOf AddClock))
End Sub
Private Sub AddClock()
waitClock = New WaitClock(120, 120, "Loading...")
waitClock.ClockBackGroundColor = Color.White
waitClock.FontColor = Color.Black
waitClock.Clock.Location = New Point(5, 5)
waitClock.LoadFont("ARIAL", 8, FontStyle.Regular)
waitClock.SetArrayColors(New Color() {Color.FromArgb(0, 100, 100), Color.FromArgb(0, 136, 136), Color.FromArgb(0, 170, 170), Color.FromArgb(0, 204, 204)})
waitClock.OuterCircleWeight = 8
waitClock.InnerCircleWeight = 5
waitClock.Create(True)
Me.Panel1.Controls.Add(waitClock.Clock)
End Sub
Private Sub NotifyTaskHasFinished()
Label1.Text = "LongTask() method has finished"
End Sub
End Class