Progressbar selber Programmieren

  • VB.NET

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Progressbar selber Programmieren

    Hallo,

    Ich habe eine frage zu diesem Thema,
    ich möchte eine eigene Progressbar Programmieren/Gestalten wie kann ich dies am besten umsetzen?

    Ich habe gelesen das man das auch per PicturesBox realisieren kann?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Nun, dazu müsstest du sie als eigenes Control basteln. PictureBoxen sind dafür denkbar ungeeignet. Ich würde das warsch. mit GDI lösen.

    Mfg, jmb.96 :)
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."
    hmm, hast du eventuell ein Beispiel in VB?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Ja, aber das mit PictureBoxen zu machen, ist die denkbar schlechteste Lösung.
    Du kannst GDI+ nehmen. Ich habe dir mal eben ein Beispiel geschrieben, das eine einfache ProgressBar darstellt, deren Farben du verändern kannst:

    VB.NET-Quellcode

    1. Imports System.Drawing
    2. Imports System.Windows.Forms
    3. Public Class CustomProgressBar
    4. Inherits Control
    5. Private _frontColor As Color
    6. Private _maximum As Integer
    7. Private _value As Integer
    8. Public Property FrontColor As Color
    9. Get
    10. Return _frontColor
    11. End Get
    12. Set(ByVal value As Color)
    13. _frontColor = value
    14. Invalidate()
    15. End Set
    16. End Property
    17. Public Property Maximum As Integer
    18. Get
    19. Return _maximum
    20. End Get
    21. Set(ByVal value As Integer)
    22. _maximum = value
    23. Invalidate()
    24. End Set
    25. End Property
    26. Public Property Value As Integer
    27. Get
    28. Return _value
    29. End Get
    30. Set(ByVal value As Integer)
    31. _value = value
    32. Invalidate()
    33. End Set
    34. End Property
    35. Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) ' wird aufgerufen, wenn die ProgressBar gezeichnet werden soll
    36. MyBase.OnPaint(e) ' damit das Paint-Event gefeuert wird
    37. Dim g As Graphics = e.Graphics
    38. Dim w As Integer = Math.Floor(_value / _maximum * Width) ' legt fest, wie breit der Füllbalken ist
    39. g.FillRectangle(New SolidBrush(Color.Blue), New Rectangle(0, 0, w, Height)) ' zeichnet den Füllbalken
    40. g.DrawLine(Pens.Black, New Point(w, 0), New Point(w, Height)) ' schwarze Linie ans Ende des Füllbalkens zeichnen
    41. g.DrawRectangle(Pens.Black, New Rectangle(0, 0, Width - 1, Height - 1)) ' einen Rahmen zeichnen
    42. End Sub
    43. End Class
    Das kannst du dir dann in die Toolbox ziehen.
    Wow, sieht ja interessant aus, kannst du eventuell mir sagen wie ich das am besten anspreche?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Ja stimmt, sorry hab das übersehen
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Im Designer wirft das Ding allerdings einen Fehler, wie ich soeben rausfand, weil da bei der Berechnung was schiefläuft.
    Also am besten per Code erstellen oder eine entsprechende Abfrage ins OnPaint-Event einbauen.

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim prg As New CustomProgressBar
    3. prg.Size = New Size(200, 30)
    4. prg.Location = New Point(10, 10)
    5. prg.Maximum = 100
    6. prg.Value = 20
    7. prg.BackColor = Color.Red
    8. prg.ForeColor = Color.Blue
    9. Controls.Add(prg)
    10. End Sub
    Ich bedanke mich erstmal für die Hilfe, damit kann ich zumindestens mal rum probieren :)
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.

    eminem schrieb:

    Ich habe eine frage zu diesem Thema,
    ich möchte eine eigene Progressbar Programmieren/Gestalten wie kann ich dies am besten umsetzen?

    Controls entwickeln ist ziemlich anspruchsvoll.
    Lasses besser erstmal, und erlerne stattdessen, wie du die in post#5 gegebenen Progressbars verwendest, anstatt das Rad neu zu erfinden.
    Mal ne frage:

    Kann man auch Image statt ForeColor verwenden oder gibt es dort probleme?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Ich habe statt prg.BackColor = Color.Red => prg.BackgroundImage = My.Resources.grafik genommen und klappt auch,
    und das möchte ich auch mit der prg.ForeColor = Color.Blue machen, wenn das überhaupt möglich ist?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.