Buffering in Simulation einbauen

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Buffering in Simulation einbauen

    Servus Miteinander!

    Ich bin frisch im Forum und frisch in VB. Programmiert habe ich eine Pendelsimulation, die die Pendelbewegung in einer 3D Animation und einem Diagramm ausgibt. Nun flackert die Animationen natürlich wie Teufel. Als Lösung habe ich schon einiges gefunden, unter anderem eine Lösung von BLAZE, aus diesem Forum.(Buffering) Nur wie bekomme ich diese in mein Programm eingebunden? Ich muss also die Instanz von Blaze in meinen betroffenen forms aufrufen. nur da scheitert es. Kann man mir noch helfen? Das wäre toll! Ich hoffe ihr seids nicht leid mit den Deppen.

    Hier als Beispiel mein Code für die Ausgabe des Diagramms:

    EDIT: Hiermit habe ich es jetzt versucht. Leider nur mit Mäßigem Erfolg.


    VB.NET-Quellcode

    1. Me.SetStyle(ControlStyles.DoubleBuffer, True)
    2. Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)


    (siehe unten im Code)

    VB.NET-Quellcode

    1. Public Class Form3
    2. Public zoom As Decimal
    3. Private Sub Diagram(ByVal sender As Object, ByVal e As _
    4. System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    5. Dim p As New Pen(Color.White, 4)
    6. e.Graphics.DrawRectangle(p, 50, 50, Me.Width - 71, Me.Height - 91)
    7. ' Diagramm
    8. For kk = 0 To Form1.k - 1
    9. e.Graphics.DrawEllipse(p, CInt(50 + kk * (Me.Width - 91) / 100), _
    10. CInt(50 + (Me.Height - 91) / 2) - zoom * Form1.phiwerte(kk), 10, 10)
    11. Next
    12. End Sub
    13. Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    14. End Sub
    15. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    16. zoom = zoom / 2
    17. End Sub
    18. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    19. zoom = zoom * 2
    20. End Sub
    21. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    22. 'max phi suchen
    23. Dim i As Integer
    24. Dim max As Decimal
    25. For i = 0 To 100
    26. If Math.Abs(Form1.phiwerte(i)) > max Then
    27. max = Math.Abs(Form1.phiwerte(i))
    28. End If
    29. Next
    30. zoom = (Me.Height - 91) / max / 2
    31. End Sub
    32. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cirrfeld“ ()

    Willkommen im Forum. :thumbup:
    1. Wir möchten Deinen Code gern als Code loesen können, dazu hat Herr vb-paradise den [VB]-Button erfunden.
      Editiere bitte Deinen Post, markiere den gesamten Quelltext und drück auf den [VB]-Button. Nutze den Vorschau-Button
    2. Schmeiß leere Routinen gleich raus, sie behindern die Lesbarkeit Deines Codes.
    3. Wenn Du physikalische Probleme berechnest, ist Double angesagt, nicht aber Decimal.
    4. Kannst Du ggf. Deinen gesamten Quellcode posten?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!