GDI+ kleines Problem mit fortlaufender Linie

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Gather.

    GDI+ kleines Problem mit fortlaufender Linie

    Spoiler anzeigen
    Hallö'chen und guten Morgen Leute,
    ich hab ein kleines Problem , stehe wahrscheinlich nur auf dem Schlauch, aber ich komm grad nicht drauf.
    Ich habe eine Form mit Picturebox und Timer. Der Timer ruft das Paintevent der Picturebox per

    VB.NET-Quellcode

    1. PictureBox1.Invalidate()
    auf und soll eine Linie mit Nullpunkt nach links fortlaufend erweitern.
    Dies ist für ein dynamisches Flankendiagramm ,welches mir zur Laufzeit hin die Position von Schalter X (0 oder 1) anzeigt. Habe das ganze erstmal als Dummy-Form zum Üben gemacht.
    Jedoch habe ich schon beim Zeichnen nach links ein Problem. Egal durch welche Additions- oder Subtraktionskombination der X-Achse bewegt sich nur eine gleichbleibend große Linie nach rechts.

    Hier der Quellcode. Ich hoffe ihr könnt mir da mal eben den Schubser in die richtige Richtung geben.

    [expander]

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim A As Boolean
    4. Dim X As Integer = 150
    5. Dim Nullpunkt As Integer = 150
    6. Dim Y As Integer = 50
    7. Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
    8. Dim Points As New List(Of Point)
    9. Points.Add(New Point(Nullpunkt, Y))
    10. Points.Add(New Point(X - 10, Y))
    11. Dim PointArray() As Point = Points.ToArray
    12. 'Zeichnen
    13. Draw(e.Graphics, PointArray)
    14. End Sub
    15. Sub Draw(ByVal Gra As Graphics, ByVal points() As Point)
    16. Dim Pen As New Pen(Color.Black, 5)
    17. With Gra
    18. .Clear(Color.White)
    19. .DrawLines(Pen, points)
    20. End With
    21. End Sub
    22. Private Sub cmd_var_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_var.Click
    23. If A = False Then
    24. tb_var.Text = "A = True"
    25. A = True
    26. Else
    27. tb_var.Text = "A = False"
    28. A = False
    29. End If
    30. End Sub
    31. Private Sub timer_dia_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timer_dia.Tick
    32. X = X + 10
    33. 'Y = +10
    34. PictureBox1.Invalidate()
    35. End Sub
    36. Private Sub cmd_draw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_draw.Click
    37. If timer_dia.Enabled = False Then
    38. timer_dia.Enabled = True
    39. Else
    40. timer_dia.Enabled = False
    41. End If
    42. End Sub
    43. End Class


    Danke im Voraus.[/expander]

    EDIT : Schusselfehler der Oberliga. Kann gelöscht werden. Habe den Fehler gefunden.

    DannyDee schrieb:

    Ich habe eine Form mit Picturebox und Timer. Der Timer ruft das Paintevent der Picturebox per

    Dies bezüglich noch:
    Du benötigst den Timer doch nicht.
    Das PaintEvent wird eigentlich automatisch immer neu ausgelöst.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Gather schrieb:

    Du benötigst den Timer doch nicht.
    Das PaintEvent wird eigentlich automatisch immer neu ausgelöst.

    Der Timer ist in der Projektform schon gegeben ,da ich über einen Timer im Hauptprojekt einen Flankenwert auslese, und nach jedem auslesen soll das Diagramm geupdated werden. Deshalb der Timer.
    Ich werde erstmal ncoh ein wenig spielen , und schauen ob ich es schaffe eine Flanke wandern zu lassen. Falls ich Fragen habe , melde ich mich. :)
    Ich will jetzt nicht auf Werbung ausgehen, aber hast du dir da schon den MetroTracker angesehen:
    [Release] MetroSuite [UPDATE 02.06.2013]- Holt euch den modernen Windows 8 Style.
    bzw.
    [VB 2012] Erstellen eines einfachen Tracker-Controls
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!