Code für verbreitern einer RectangleShape

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von kj4.

    Code für verbreitern einer RectangleShape

    Hallo Com,


    Ich möchte eine RectangleShape gerne mit einem Timer in die Breite vergrößern, es flackert aber sehr
    Ich benutze zurzeit diesen Code:

    VB.NET-Quellcode

    1. Private Sub Timer5_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer5.Tick RectangleShape2.Width += 1 If RectangleShape2.Size = New Size(501, 106) Then Timer5.Stop() End If
    2. End Sub



    Gibt es noch andere Möglichkeiten damit das Ganze ein wenig flüssiger geht?

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

    zeichne das teil selbst: mit GDI+ im Paint-Event

    der timer verändert dann nur noch variablen die angeben wie das ding auszusehen hat und ruft me.invalidate auf. dadurch wird die form neugezeichnet - und dein selbstgezeichnetes eben rectangleshape aktualisiert^^

    wenn me.doublebuffered = true ist sollte es noch weniger flackern

    edit: wenn du die events des rectangleshapes nutzen willst ist das natürlich keine besonders gute lösung. nur ist es nicht der (haupt-) sinn von controls animationen in welcher form auch immer darzustellen.. darum ruckelt das ganze auch merklich, da es einfach zuviel ist^^
    oder zeichne es in ein bitmap:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim recwith As Integer
    3. Sub draw()
    4. Dim g As Graphics
    5. Dim bmp As New Bitmap(600, 200)
    6. g = Graphics.FromImage(bmp)
    7. g.DrawRectangle(New Pen(New SolidBrush(Color.Black), 1), New Rectangle(New Point(0, 0), New Size(recwith, 204)))
    8. g.FillRectangle(Brushes.White, New Rectangle(New Point(1, 1), New Size(recwith - 1, 198)))
    9. Me.CreateGraphics.DrawImage(bmp, New Point(10, 10))
    10. End Sub
    11. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    12. recwith += 1
    13. If recwith = 501 Then
    14. Timer1.Stop()
    15. End If
    16. draw()
    17. End Sub
    18. End Class