سؤال

وكيف يمكنني تقليل وميض في لوحة 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 لا مضاعفة مخزنة - لذلك يفعل كل رسم مباشرة في ذاكرة مرئية، لا منطقة عازلة الخلفي.

وتحتاج إلى فئة فرعية من الدرجة الفريق وتمكين التخزين المؤقت المزدوج على الطبقة الجديدة. ويمكن القيام بذلك عن طريق القيام

SetStyle

والدعوة في منشئ مع أعلام OptimisedDoubleBuffering وتمكين DoubleBuffering.

وبمجرد الانتهاء من الدرجة وحة الجديدة التي يتم تخزينها مؤقتا مزدوج، يمكنك استخدامها في التطبيق الخاص بك بدلا من لوحة قياسية.

وقلت لك أنك لن ترغب الإجابة؛)

نصائح أخرى

ورين هو الصحيح، إن شاء subclasses ترث هو أفضل وسيلة. في غضون ذلك على الرغم من تغيير تلك الدعوة من تحديث ليبطل. قد تساعد قليلا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top