2014-04-11 13 views
6

Altre domande sull'indirizzo SE come accelerare il ridimensionamento del controllo dell'interfaccia utente nidificato, ma - cosa succede se non ci sono controlli?Perché c'è un black lag ogni volta che una finestra WPF viene ridimensionata?

Mentre trascini il bordo di una finestra WPF, anche una finestra principale senza contenuto, le barre nere sfarfallano brevemente durante il trascinamento. Questo produce un uno feel- scadente che io non voglio infliggere sui clienti:

WPF window being resized

Si riempie più lento e più pesante con un'interfaccia utente completa su di esso pure. Questo non è nemmeno il modo in cui appare brutto quando si ridimensiona usando i bordi superiore o sinistro. Windows Forms, anche con l'interfaccia utente più pesante che ho creato, non sembra mai così male.

Cosa si può fare per rendere le prestazioni di ridimensionamento della finestra di WPF paragonabili alle forme di vincita?

(ho Windows 7 x64 e un sistema di monitoraggio tripla su un AT Radeon HD 7470.)

+0

Non credo (ma non sono sicuro) che ci sia una soluzione reale per questo che possiamo implementare. Basta aprire Microsoft Word/Excel/Outlook e ridimensionare l'applicazione e sperimenterai quasi gli stessi problemi che stai riscontrando. Ci sono modi per ridurre la visibilità ([trovato qui] (http://wieser-software.blogspot.co.uk/2012/06/wpf-window-rendering-woes.html)) ma se Microsoft può ' t avere il loro software in giro per il problema, quindi non credo che saremo in grado, sia. –

+0

Word, Excel e Outlook si ridimensionano estremamente bene sul mio sistema senza alcun nero. Visual Studio e Blend, tuttavia, non lo fanno. Le finestre degli strumenti fanno. – jnm2

+0

Mi chiedo che cosa lo sta causando? – jnm2

risposta

3

Si potrebbe aggiornare la scheda grafica e provarlo di nuovo, ma che non cambierà nulla. La ragione è piuttosto semplice. Tutti noi vediamo questo a volte basato sulla velocità/lentezza del nostro computer. A volte funziona liscio perché non abbiamo molte immagini da disegnare. Il motivo non è il colore di sfondo corretto trovato nella scheda grafica in quel momento nel processo di ridisegno. I tuoi driver vanno bene, e non solo perché usi Wpf. Altre tecniche usano lo stesso meccanismo dietro il ridisegno.

La prima cosa che WPF farà è cancellare la regione sporca che sta per essere ridisegnata. Lo scopo delle regioni sporche è ridurre la quantità di pixel inviati allo stadio di fusione di uscita della pipeline della GPU. Qui è dove vediamo il colore nero. La finestra stessa a quel punto non ha colori di sfondo o il suo colore di sfondo è impostato su trasparente e quindi per noi la GPU disegna lo sfondo nero. Le cose funzionano asincrono in wpf che è buono così.

Per risolvere questo problema è possibile impostare un colore fisso come "Bianco" sulla finestra. Quindi il sistema WPF pulirà la regione sporca ma la riempirà automaticamente con il colore bianco anziché nero. Questo di solito aiuta.

Abbina il colore della finestra o il colore del livello superiore. Non lasciare che la GPU usi il nero e si dovrebbe fare bene. Btw Wpf è più veloce di WinForm quindi non preoccuparti.

Problemi correlati