Problem z odświeżaniem elementów okna

0

Witam
W moim programie nadpisuję funkcję OnPaint() okna głównego, w której renderuję scenę 3D, rysowaną następnie w panelu, który jest elementem okna głównego.
Oprócz tego w oknie są także menu i pasek z button'ami oraz statusBar.
Na koniec metody wywołuję this.Invalidate().

Wszystko się ładnie wyświetla, ale tylko w panelu na którym renderowana jest scena 3D. Natomiast reszta elementów okna odświeża się tylko wtedy gdy przesuwam nad nimi wskaźnik myszy.

W konstruktorze ustawiam także opcje stylu okna:

ControlStyles.AllPaintingInWmPaint
ControlStyles.Opaque
ControlStyles.UserPaint

Innym problemem jest także miganie renderowanej sceny podczas zmiany rozmiaru okna
Będę wdzieczny za kazdą pomoc przy rozwiązaniu problemu.

Z góry dziękuję i pozdrawiam

0
Janek Kowalik napisał(a)

Witam
W moim programie nadpisuję funkcję OnPaint() okna głównego, w której renderuję scenę 3D, rysowaną następnie w panelu, który jest elementem okna głównego.
Użyj zdarzenia Paint (lub przeładuj OnPaint) panelu.

Janek Kowalik napisał(a)

Na koniec metody wywołuję this.Invalidate().
Jak skorzystasz ze zdarzenia Paint obiektu, po którym malujesz, nie będzie to potrzebne. Również miganie powinno zniknąć. A jak nie, to ustaw DoubleBuffered formatki na true.

0

Dzięki wielkie, przeładowanie Paint() panelu pomogło i teraz elementy sie odświeżają prawidłowo.
Jednak nadal widoczne jest miganie panelu podczas zmiany rozmiaru okna :/ .. DoubleBuffered okna nie pomogło, a Panel z tego co zauwazyłem nie ma opcji DoubleBuffered, chyba że sie mylę.

0

Hej, jeszcze jeden problem do rozwiązania się pojawił takze związany z odświeżaniem.

Po wybraniu pewnej opcji z menu okna głównego tworzę nowe okno, dialog. Uwidaczniam je za pomoca showDialog() .
Problem natomiast w tym że po przesunięciu okna dialogu w inne miejsce, w starym pozostaje ślad który się nie wypełnia od razu, dopiero po chwili.

Jeśli ma ktoś pomysł, wie jak to poprawić to będę bardzo wdzięczny.

pozdrawiam

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