Frage

Wie kann ich Flimmern in einem VB2005 Panel reduzieren? Im Inneren der Mutterplatte habe ich 2 weitere Platten, die ich verwende bin.

Die äußerste Panel enthält einen Hintergrund-Sprites und die beiden innersten Platten sind Overlays, die die Orte im Hintergrund Sprite passen ändern.

Wenn ich das Overlay-Sprites ändern würde Ich mag das Flimmern reduzieren und einen reibungsloser Übergang von einem Sprit, um zum nächsten zu machen.

Hier ist der Code, der die Bilder in den Overlay-Panels ändert die Overlay-Panel wird nicht verändert, wenn der neue Wert der gleiche wie der alte Wert

 Private Sub TrackBar2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar2.Scroll, TrackBar1.Scroll
    If (Panel2.Tag <> TrackBar1.Value) Then
        Panel2.Tag = TrackBar1.Value
        Panel2.BackgroundImage = tops(TrackBar1.Value) //img array for the top panel
        Panel2.Update()
    End If
    If (Panel3.Tag <> TrackBar2.Value) Then
        Panel3.Tag = TrackBar2.Value
        If (TrackBar2.Value > 0) Then
            Panel3.Location = New Point(182, 210)
        Else
            Panel3.Location = New Point(182, 209)
        End If
        Panel3.BackgroundImage = bottoms(TrackBar2.Value)//img array for the bottom panel
        Panel3.Update()
    End If
War es hilfreich?

Lösung

Du wirst nicht diese Antwort mögen. Das Flackern wird dadurch verursacht, dass der Standard .NET-Panel ist nicht gepuffert doppelt - so es die ganze Zeichnung direkt im sichtbaren Speicher tut, keine Back-Puffer.

Sie müssen die Panel-Klasse, Unterklasse und doppelte Pufferung auf die neue Klasse zu ermöglichen. Dies kann, indem Sie ein getan werden

SetStyle

Aufruf im Konstruktor mit den Flaggen OptimisedDoubleBuffering und Doublebuffering aktiviert.

Wenn Sie die neue Panel-Klasse, die doppelt gepuffert ist, können Sie sie in Ihrer Anwendung anstelle des Standard-Panel verwendet werden.

Ich habe dir gesagt, du würdest die Antwort nicht mögen;)

Andere Tipps

Rein Recht, Subklassifizieren ist der beste Weg. In der Zwischenzeit ändert diesen Anruf von einem Update jedoch ungültig zu machen; das könnte ein wenig helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top