Porady: zmniejszanie migotania grafiki za pomocą podwójnego buforowania formularzy i kontrolek

Buforowanie podwójne używa buforu pamięci do rozwiązywania problemów z migotaniem skojarzonych z wieloma operacjami malowania. Po włączeniu podwójnego buforowania wszystkie operacje malowania są najpierw renderowane do buforu pamięci zamiast powierzchni rysunkowej na ekranie. Po zakończeniu wszystkich operacji malowania bufor pamięci jest kopiowany bezpośrednio do powierzchni rysunku skojarzonej z nią. Ponieważ na ekranie jest wykonywana tylko jedna operacja graficzna, usuwa się migotanie obrazu skojarzone ze złożonymi operacjami malowania. W przypadku większości aplikacji domyślne podwójne buforowanie udostępniane przez program .NET Framework zapewni najlepsze wyniki. Standardowe kontrolki Windows Forms są domyślnie buforowane dwukrotnie. Możesz włączyć domyślne podwójne buforowanie w formularzach i utworzone kontrolki na dwa sposoby. Możesz ustawić DoubleBuffered właściwość na true, lub wywołać metodę SetStyle , aby ustawić flagę OptimizedDoubleBuffer na true. Obie metody umożliwiają domyślne podwójne buforowanie dla formularza lub kontrolki i zapewniają renderowanie grafiki bez migotania. SetStyle Wywoływanie metody jest zalecane tylko w przypadku kontrolek niestandardowych, dla których zapisano cały kod renderowania.

W przypadku bardziej zaawansowanych scenariuszy podwójnego buforowania, takich jak animacja lub zaawansowane zarządzanie pamięcią, można zaimplementować własną logikę podwójnego buforowania. Aby uzyskać więcej informacji, zobacz Instrukcje: Ręczne zarządzanie buforowaną grafiką.

Aby zmniejszyć migotanie

  • Ustaw właściwość DoubleBuffered na true.

    DoubleBuffered = true;
    
    DoubleBuffered = True
    
    

- lub -

  • Wywołaj metodę , SetStyle aby ustawić flagę OptimizedDoubleBuffer na true.

    SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
    
    SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
    
    

Zobacz też