Hallo Leute,
ich wollte soetwas schon immer machen und heute habe ich einmal "gebastelt".
Ich möchte Euch den Quellcode nicht vorenthalten.
Einfach nur einen Panel auf die Form legen. Dem Panel eine Hintergrundfarbe und einen Font zuweisen.
Dann einfach die Progressbar mit folgendem Parameter aufrufen:
Hier ein Videoclip von den Möglichkeiten:
youtu.be/jmhhQA1f7eU
Hier der Code:
Und so wird die Progressbar verwendet:
verschoben von den Sonstigen Problemstellungen in den Sourcecodeaustausch ~VaporiZed
ich wollte soetwas schon immer machen und heute habe ich einmal "gebastelt".
Ich möchte Euch den Quellcode nicht vorenthalten.
Einfach nur einen Panel auf die Form legen. Dem Panel eine Hintergrundfarbe und einen Font zuweisen.
Dann einfach die Progressbar mit folgendem Parameter aufrufen:
BODrawProgress(Panel, Prozent, Farbe1, Farbe2, Balkenbreite)
Hier ein Videoclip von den Möglichkeiten:
youtu.be/jmhhQA1f7eU
Hier der Code:
VB.NET-Quellcode
- Imports System.Drawing.Drawing2D
- ''' <summary>
- ''' Erstellt eine runde Progressbar mit 100 Ticks (0-100%)
- ''' Font wird vom Panel verwendet, Hingtergrundfarbe ebenfalls
- ''' Passt sich automatisch an die Panel-Größe an
- ''' </summary>
- ''' <param name="DestPanel">Windows Form Panel</param>
- ''' <param name="Percentage">Prozentsatz 0-100</param>
- ''' <param name="BarColor1">Farbe 1 für Farbverlauf</param>
- ''' <param name="BarColor2">Farbe 2 für Farbverlauf</param>
- ''' <param name="BarWidth">Breite des Fortschrittsbalkens</param>
- Public Sub BODrawProgress(DestPanel As Panel, Percentage As Single, BarColor1 As Color, BarColor2 As Color, BarWidth As Integer)
- If Percentage > 100 Then Percentage = 100
- If Percentage < 0 Then Percentage = 0
- Dim g As Graphics = Graphics.FromHwnd(DestPanel.Handle)
- Dim rectForGradient As Rectangle = New Rectangle(0, 0, DestPanel.Width, DestPanel.Height)
- Dim rect As Rectangle = New Rectangle(BarWidth, BarWidth, DestPanel.Width - BarWidth - BarWidth, DestPanel.Height - BarWidth - BarWidth)
- Dim progressAngle = CSng(360 / 100 * Percentage)
- Dim remainderAngle = 360 - progressAngle
- Using progressPen As New Pen(BarColor1, BarWidth), remainderPen As New Pen(Color.LightGray, CInt(BarWidth))
- If Percentage = 0 Then g.Clear(DestPanel.BackColor) ' Initial mit 0% aufrufen, damit der Hintergrund geleert wird
- g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
- g.CompositingQuality = CompositingQuality.HighQuality
- g.PixelOffsetMode = PixelOffsetMode.HighQuality
- g.InterpolationMode = InterpolationMode.HighQualityBilinear
- g.DrawArc(remainderPen, rect, progressAngle - 90, remainderAngle) 'Grau
- Dim GP As New GraphicsPath
- GP.AddArc(BarWidth, BarWidth, DestPanel.Width - BarWidth - BarWidth, DestPanel.Height - BarWidth - BarWidth, -90, progressAngle)
- Dim LGBR As New LinearGradientBrush(rectForGradient, BarColor1, BarColor2, 0)
- g.DrawPath(New Pen(LGBR, BarWidth), GP)
- End Using
- Dim text As String = Percentage.ToString + "%"
- Dim textSize = g.MeasureString(text, DestPanel.Font)
- Dim textPoint As New Point(CInt(rect.Left + (rect.Width / 2) - (textSize.Width / 2)), CInt(rect.Top + (rect.Height / 2) - (textSize.Height / 2)))
- g.FillRectangle(New SolidBrush(DestPanel.BackColor), New RectangleF(textPoint.X, textPoint.Y, textSize.Width, textSize.Height))
- g.DrawString(text, DestPanel.Font, New SolidBrush(Color.Black), textPoint)
- End Sub
Und so wird die Progressbar verwendet:
VB.NET-Quellcode
- Private Sub Button_TestProgress2_Click(sender As Object, e As EventArgs) Handles Button_TestProgress2.Click
- Panel_Progressbar.Width = 182
- Panel_Progressbar.Height = 182
- Panel_Progressbar.Font = New Font("Microsoft YaHei UI", 22)
- For i As Integer = 0 To 100
- BODrawProgress(Panel_Progressbar, i, Color.Orange, Color.OrangeRed, 10)
- 'warte(0.02) 'hier nur zum Test eine Warteschleife oder was auch imme
- Next i
- End Sub
verschoben von den Sonstigen Problemstellungen in den Sourcecodeaustausch ~VaporiZed
Liebe Grüße
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
Roland Berghöfer
Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()