C#, graphics, migotanie przy odświeżaniu

0

piszę sobie program w C# w Visual Studio 2005 i rysuję sobie w nim coś w 2D - niestety - nie potrafię pozbyć się efektu migotania podczas odświeżania grafiki przez program - tzn. przez ułamek sekundy miga biały ekran...

przekopywałem się przez dokumentację, i znalazłem BufferedGraphics - który istotnie zredukował migotanie, ale tylko pojawiające się gdy rysuję po grafice okna (bez tego odświeża się właściwie po wywołaniu dowolnej funkcji rysującej coś) - niemniej, migotanie pomiędzy renderowaniem jednej klatki a drugiej pozostało, i uniemożliwia mi zrobienie powiedzmy "animacji" tak, żeby nie wyglądała (jak mawia mój fizyk) "ochytnie"...

pomocy!

0

użyj podwójnego buforowania

        public IcrForm()
        {
            this.DoubleBuffered = true; << dodaj tą linijkę do głównego okna swojego programu
            InitializeComponent();
        }
0

próbowałem tak - nic nie zmieniało

EDIT: błąd.... działa o ile nie korzysta się oddzielnie z dodatkowego bufora :) dzięki - wcześniej sprawdzałem tylko jako wspomagacz do BufferedGraphics

EDIT2: ech... i kolejny problem - jak włączyć DoubleBuffered dla Panelu, tzn. "TabPage" ?

0

Nie jestem pewien ale chyba nie można. Podwójne buforowanie włącza się tylko dla okien (Form).
Zamiast włączać buforowanie dla TabPage osobno, włącz dla całego okna.

0

problem polega na tym, ze po włączeniu buforowanie dla całego okna nie działa on w panelach

dla testu podpiąłem identyczną funkcję rysującą pod Paint równocześnie dla okna i tabPage'a i o ile po oknie maże ładnie, to po tabie już nie :/

0

jak cos przy paintach dla ramek i innych takich mieszasz to doloz to

this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque,true);

, powinno pomoc pozdr

0

rozumiem, że do konstruktora okna? bo dodałem i specjalnie nic mi to nie zmieniło :/

0

hmmm no wlasnie do konstruktora.....hmmmm czyli nie wlacza sie podwojne bufforowanie dla penelu tak?

0

dokładnie - migota przy odświeżaniu przez metodę render dla obiektu DoubleBuffer, a dla zwykłego rysowania po Graphics panelu, odświeża się po wywołaniu każdej funkcji rysującej

widziałem już podobne myki (tzn. z ControlStyles) w sieci, ale żadnego nie udało mi się poprawnie zaimplementować, a niektóre wręcz przerażały mnie ilością kodu...

1 użytkowników online, w tym zalogowanych: 0, gości: 1