2014-04-11 15 views
6

Inne pytania dotyczące adresu SE, jak przyspieszyć zmianę rozmiaru zagnieżdżonego interfejsu użytkownika, ale- co, jeśli nie ma żadnych kontroli?Dlaczego za każdym razem, gdy zmienia się rozmiar okna WPF, występuje czarne opóźnienie?

Podczas przeciągania krawędzi okna WPF, nawet głównego okna bez zawartości, czarne paski migają krótko podczas przeciągania. To daje marne feel- jednego, że nie chce wyrządzić klientów:

WPF window being resized

robi się wolniejszy i cięższy z pełnym UI na wierzchu, jak również. Nie ma nawet wpływu na to, jak brzydko wygląda podczas zmiany rozmiaru za pomocą górnej lub lewej krawędzi. Windows Forms - nawet z najcięższym interfejsem, który zbudowałem - nigdy nie wygląda tak źle od samego początku.

Co można zrobić, aby zmiana rozmiaru okna WPF była porównywalna do wygrywania formularzy?

(mam Windows 7 x64 i potrójny system monitora na AT Radeon HD 7470.)

+0

Nie wierzę (ale nie jestem pewien), że istnieje realna poprawka do tego, którą możemy wprowadzić. Wystarczy otworzyć program Microsoft Word/Excel/Outlook i zmienić rozmiar aplikacji, aby doświadczyć niemal identycznych problemów. Istnieją sposoby na zmniejszenie zauważalności ([tutaj znalezione] (http://wieser-software.blogspot.co.uk/2012/06/wpf-window-rendering-woes.html)), ale jeśli Microsoft może " Jeśli zdobędziemy własne oprogramowanie wokół tego problemu, to nie sądzę, że będziemy w stanie. –

+0

Program Word, Excel i Outlook bardzo dobrze dopasowują się do mojego systemu bez czarnych. Visual Studio i Blend jednak tego nie robią. Okna narzędzi. – jnm2

+0

Zastanawiam się, co jest przyczyną? – jnm2

Odpowiedz

3

Można zaktualizować kartę graficzną i wypróbuj go ponownie, ale to przyzwyczajenie zmienić cokolwiek. Powód jest dość prosty. Wszyscy widzimy, że czasami opiera się na tym, jak szybki/wolny jest nasz komputer. Czasami działa płynnie, ponieważ nie mamy wielu grafik do narysowania. Powodem jest brak odpowiedniego koloru tła na karcie graficznej w tym momencie w procesie przerysowywania. Twoje sterowniki są w porządku, a nie tylko dlatego, że używasz Wpf. Inne techniki używają tego samego mechanizmu za przerysowaniem.

Pierwszą rzeczą, jaką zrobi WPF, jest usunięcie brudnego regionu, który ma zostać przerysowany. Celem brudnych regionów jest zmniejszenie ilości pikseli wysyłanych do wyjściowego etapu połączenia rurociągu GPU. Tutaj widzimy czarny kolor. Samo okno w tym miejscu nie ma koloru tła lub jego kolor tła jest ustawiony jako przezroczysty, a więc dla nas GPU rysuje czarne tło. Rzeczy przebiegają asynchronicznie w wpf, co jest dobre.

Aby to naprawić, możesz ustawić kolor poprawki, na przykład "Biały", w oknie. Następnie system WPF wyczyści brudny obszar, ale wypełni go automatycznie kolorem białym zamiast czarnym. Zwykle pomaga to.

Dopasuj kolor okna lub kolor najwyższej warstwy. Nie pozwól GPU używać czarnego i powinieneś zrobić dobrze. Btw Wpf jest szybszy niż WinForm, więc nie martw się.

Powiązane problemy