Pergunta

Como faço para reduzir a cintilação em um painel vb2005? Dentro do painel de pai Eu tenho 2 outros painéis que estou estou usando.

O exterior mais painel contém um sprite fundo e os dois painéis mais interiores são sobreposições que a mudança para se encaixam os lugares no fundo do sprite.

Quando eu mudar os sprites de sobreposição gostaria de reduzir a cintilação e torná-lo uma transição suave de um sprite para a próxima.

Aqui está o código que muda as imagens nos painéis de sobreposição painel de sobreposição não é alterada se o novo valor é o mesmo que o valor antigo

 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
Foi útil?

Solução

Você não vai gostar dessa resposta. A cintilação é causada pelo fato de que o painel padrão .NET não é dupla tamponada - por isso faz todo o, não um buffer de fundo desenho diretamente na memória visível.

Você precisa subclasse da classe Panel e permitir o buffer duplo na nova classe. Isto pode ser feito fazendo uma

SetStyle

chamada no construtor com as bandeiras OptimisedDoubleBuffering e DoubleBuffering habilitado.

Depois de ter a nova classe painel que é duplo em buffer, você pode usá-los em sua aplicação em vez do Painel padrão.

Eu disse que você não gostaria que a resposta;)

Outras dicas

Rein é certo, subclassificação é o melhor caminho. Nesse meio tempo, porém, mudar essa chamada de Atualização para invalidar; que pode ajudar um pouco.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top