Public Class AquaBar
Public Enum AquaBarColors
LightBlue
Red
Green
Purple
End Enum
Private p_Value, p_Minimum, p_Maximum As Int64
Private p_BarColor As AquaBarColors
''' <summary>
''' Imposta il valore visualizzato dalla barra.
''' </summary>
''' <value>Un intero compreso tra Minimum e Maximum.</value>
''' <returns></returns>
''' <remarks></remarks>
Public Property Value() As Int64
Get
Return p_Value
End Get
Set(ByVal Value As Int64)
If Value >= p_Minimum And Value <= p_Maximum Then
Dim Percent As Double
Dim BarWidth As Int16
p_Value = Value
Percent = (p_Value - p_Minimum) / (p_Maximum - p_Minimum)
BarWidth = Me.Width * Percent
pnlBar.Width = BarWidth
Else
Throw New ArgumentOutOfRangeException
End If
End Set
End Property
''' <summary>
''' Imposta il minimo valore possibile visualizzato dal controllo.
''' </summary>
''' <value>Un intero a 64 bit, maggiore di zero.</value>
''' <returns></returns>
''' <remarks></remarks>
Public Property Minimum() As Int64
Get
Return p_Minimum
End Get
Set(ByVal Value As Int64)
If Value >= 0 Then
p_Minimum = Value
'Controlla che Maximum non sia minore di Minimum
If p_Minimum > p_Maximum Then
p_Maximum = p_Minimum + 1
End If
Else
Throw New ArgumentOutOfRangeException
End If
End Set
End Property
''' <summary>
''' Imposta il massimo valore possibile visualizzato dal controllo.
''' </summary>
''' <value>Un intero a 64 bit, maggiore di zero.</value>
''' <returns></returns>
''' <remarks></remarks>
Public Property Maximum() As Int64
Get
Return p_Maximum
End Get
Set(ByVal Value As Int64)
If Value >= 0 Then
p_Maximum = Value
'Controlla che Minimum non sia maggiore di Maximum
If p_Maximum < p_Minimum Then
p_Minimum = p_Maximum - 1
End If
Else
Throw New ArgumentOutOfRangeException
End If
End Set
End Property
''' <summary>
''' Imposta il colore della barra.
''' </summary>
''' <value>Un colore tra: azzurro, verde, viola e rosso.</value>
''' <returns></returns>
''' <remarks></remarks>
Public Property BarColor() As AquaBarColors
Get
Return p_BarColor
End Get
Set(ByVal Value As AquaBarColors)
p_BarColor = Value
Select Case Value
Case AquaBarColors.LightBlue
imgCenter.Image = imgColors.Images("button_center.PNG")
imgStart.Image = imgColors.Images("button_start_trunc.PNG")
imgEnd.Image = imgColors.Images("button_end_trunc.PNG")
Case AquaBarColors.Green
imgCenter.Image = imgColors.Images("button_center_green.PNG")
imgStart.Image = imgColors.Images("button_start_trunc_green.PNG")
imgEnd.Image = imgColors.Images("button_end_trunc_green.PNG")
Case AquaBarColors.Purple
imgCenter.Image = imgColors.Images("button_center_purple.PNG")
imgStart.Image = imgColors.Images("button_start_trunc_purple.PNG")
imgEnd.Image = imgColors.Images("button_end_trunc_purple.PNG")
Case AquaBarColors.Red
imgCenter.Image = imgColors.Images("button_center_red.PNG")
imgStart.Image = imgColors.Images("button_start_trunc_red.PNG")
imgEnd.Image = imgColors.Images("button_end_trunc_red.PNG")
End Select
End Set
End Property
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
p_Minimum = 0
p_Maximum = 100
p_Value = 100
End Sub
Private Sub pnlBar_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pnlBar.Resize
'Controlla di non lasciare spazi vuoti
If imgCenter.Location.X + imgCenter.Width < imgEnd.Location.X Then
imgCenter.Width += imgEnd.Location.X - (imgCenter.Location.X + imgCenter.Width)
End If
End Sub
End Class