패널에서 이미지를 변경할 때 깜박임을 줄입니다
문제
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
플래그를 최적화하고 두 배로 활성화하여 생성자로 호출하십시오.
이중 버퍼링 된 새 패널 클래스가 있으면 표준 패널 대신 응용 프로그램에서 사용할 수 있습니다.
나는 당신이 대답을 좋아하지 않을 것이라고 말했습니다.)
다른 팁
고삐가 옳고 서브 클래싱이 가장 좋은 방법입니다. 그 동안, 그 호출을 업데이트에서 무효로 변경하십시오. 조금 도움이 될 수 있습니다.
제휴하지 않습니다 StackOverflow