Ich war am Wochenende krank und habe deswegen ein bisschen angefangen ein kleines Control zu schreiben.
Der Code ist teilweise ziemlich ranzig, ich weiß. Aber da dies' mein erstes Control ist, bitte ich um rücksicht. Kritik ist seeehr gerne erwünscht, da ich mich im Bereich Controls weiterbilden möchte.
Der Code ist teilweise ziemlich ranzig, ich weiß. Aber da dies' mein erstes Control ist, bitte ich um rücksicht. Kritik ist seeehr gerne erwünscht, da ich mich im Bereich Controls weiterbilden möchte.
VB.NET-Quellcode
- Option Strict On
- Imports System.ComponentModel
- ''' <summary>
- ''' Eine ProgressBar im Metro-look.
- ''' </summary>
- Public Class MetroProgressBar
- Inherits Control
- 'Private Propertys
- Private _CValue As Integer
- Private _CWidth As Integer
- Private _MValue As Integer
- Private _MiValue As Integer
- Private _BGColor As Color = Color.FromArgb(230, 230, 230)
- Private _PColor As Color = Color.FromArgb(6, 176, 37)
- 'Public Propertys
- ''' <summary>
- ''' Gibt den aktuellen Wert der ProgressBar zurück oder legt diesen fest.
- ''' </summary>
- ''' <value>Den Wert der ProgressBar</value>
- ''' <returns>Den aktuellen Wert der ProgressBar</returns>
- <Browsable(True), Description("Der aktuelle Wert der ProgressBar.")> _
- Public Property Value As Integer
- Get
- Return _CValue
- Invalidate()
- End Get
- Set(value As Integer)
- If _CValue < _MValue Then
- _CValue = value
- _CWidth = CInt((Me.Width / 100) * value)
- Invalidate()
- End If
- End Set
- End Property
- ''' <summary>
- ''' Legt den Maximal-wert der ProgressBar fest oder ruft diesen ab.
- ''' </summary>
- ''' <value>Den Maximalwert der ProgressBar</value>
- ''' <returns>Den Maximal-wert der ProgressBar</returns>
- <Browsable(True), Description("Die Maximale Value der ProgressBar.")> _
- Public Property MaxValue As Integer
- Get
- Return _MValue
- End Get
- Set(value As Integer)
- _MValue = value
- Invalidate()
- End Set
- End Property
- Sub New()
- Me.Size = New Size(192, 23)
- Me.DoubleBuffered = True
- MaxValue = 100
- End Sub
- Protected Overrides Sub OnPaint(e As PaintEventArgs)
- MyBase.OnPaint(e)
- With e.Graphics
- 'Graphic Settings
- .SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
- .TextRenderingHint = Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit
- .PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
- .InterpolationMode = Drawing2D.InterpolationMode.HighQualityBilinear
- .CompositingQuality = Drawing2D.CompositingQuality.HighQuality
- 'Draw Bar
- .FillRectangle(New SolidBrush(_BGColor), 0, 0, Width - 1, Height - 1)
- .DrawRectangle(New Pen(Color.FromArgb(188, 188, 188)), DisplayRectangle)
- 'Draw Progress
- .FillRectangle(New SolidBrush(_PColor), 1, 1, _CWidth, Height - 1)
- End With
- End Sub
- End Class