문제

VB2005 패널에서 깜박임을 줄이는 방법은 무엇입니까? 상위 패널 안에는 사용중인 2 개의 다른 패널이 있습니다.

외부 패널에는 백그라운드 스프라이트가 포함되어 있으며 가장 안쪽 패널은 배경 스프라이트의 장소에 맞게 변경되는 오버레이입니다.

오버레이 스프라이트를 변경하면 깜박임을 줄이고 하나의 스프라이트에서 다음 스프라이트로 부드러운 전환으로 만들고 싶습니다.

오버레이 패널의 이미지를 변경하는 코드는 다음과 같습니다. 새 값이 이전 값과 동일하면 오버레이 패널이 변경되지 않습니다.

 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
도움이 되었습니까?

해결책

당신은이 대답을 좋아하지 않을 것입니다. 깜박임은 기본 .NET 패널이 이중 버퍼링되지 않았기 때문에 발생하므로 백 버퍼가 아닌 가시 메모리에서 모든 도면을 직접 수행합니다.

패널 클래스를 서브 클래스하고 새 클래스에서 이중 버퍼링을 활성화해야합니다. 이것은 a를 수행함으로써 할 수 있습니다

SetStyle

플래그를 최적화하고 두 배로 활성화하여 생성자로 호출하십시오.

이중 버퍼링 된 새 패널 클래스가 있으면 표준 패널 대신 응용 프로그램에서 사용할 수 있습니다.

나는 당신이 대답을 좋아하지 않을 것이라고 말했습니다.)

다른 팁

고삐가 옳고 서브 클래싱이 가장 좋은 방법입니다. 그 동안, 그 호출을 업데이트에서 무효로 변경하십시오. 조금 도움이 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top