Domanda

Come posso ridurre lo sfarfallio in un pannello vb2005? All'interno del pannello principale ho altri 2 pannelli che sto usando.

Il pannello più esterno contiene uno sprite di sfondo e i due pannelli più interni sono sovrapposizioni che cambiano per adattarsi ai luoghi nello sprite di sfondo.

Quando cambio gli sprite di overlay vorrei ridurre lo sfarfallio e renderlo una transizione graduale da uno sprite al successivo.

Ecco il codice che modifica le immagini nei pannelli di sovrapposizione il pannello di sovrapposizione non viene modificato se il nuovo valore è uguale al valore precedente

 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
È stato utile?

Soluzione

Non ti piacerà questa risposta. Lo sfarfallio è causato dal fatto che il pannello .NET predefinito non ha un doppio buffer, quindi esegue tutto il disegno direttamente nella memoria visibile, non un back buffer.

Devi sottoclassare la classe Panel e abilitare il doppio buffering sulla nuova classe. Questo può essere fatto facendo un

SetStyle

chiama nel costruttore con i flag OptimisedDoubleBuffering e DoubleBuffering abilitati.

Una volta che hai la nuova classe di pannelli con doppio buffer, puoi usarli nell'applicazione anziché nel Pannello standard.

Ti ho detto che non ti piacerebbe la risposta;)

Altri suggerimenti

Rein ha ragione, la sottoclasse è il modo migliore. Nel frattempo, però, cambia quella chiamata da Aggiorna a Non valido; questo potrebbe aiutare un po '.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top