WPF, cache imagine

În cazul în care conținutul afișat nevoie de redesenare frecvente, bitmap cache poate fi justificată. Faptul că fiecare redesenare succesive se va produce mai repede. Un exemplu este utilizarea BitmapCacheBrush desen de suprafață forme, până când alte obiecte animate muta mai sus. În ciuda faptului că cifra nu se schimba, diferite parti sunt ascunse și afișate, care necesită redesenare.

Strategia de caching nereușită ar putea crea mai multe probleme de performanță decât aplicațiile care nu sunt pe deplin optimizate. Prin urmare, nu utilizați cache, dacă nu ca recomandările de mai sus. De asemenea, utilizați instrumentul de profilare ca Perforator pentru a verifica dacă strategia aleasă este creșterea productivității.

Pentru o mai bună înțelegere a nevoii de a experimenta cu exemplul. Un exemplu este prezentat în cazul în care un simplu mută animație figura - un pătrat - pe suprafața Canvas, elementul Path care cuprinde o geometrie complexă. Pe măsură ce deplasați de-a lungul suprafeței pătrat mediu WPF este forțat să re-calcula Path și completați secțiunile lipsă. Acesta oferă o sarcină surprinzător de mare pe CPU, și animația poate deveni chiar discontinuă.

Există mai multe modalități de a rezolva această problemă. Unul dintre ele - pentru a înlocui bitmap de fundal care WPF poate funcționa mai eficient. O opțiune mai flexibilă este de a folosi caching bitmap, care stochează fundalul ca element interactiv.

Pentru a activa bitmap cache, trebuie să setați CacheMode de proprietate element care corespunde în BitmapCache. Fiecare element acceptă această caracteristică, care vă permite să alegeți exact ce fel de element este de a utiliza cache:

WPF, cache imagine

Dacă elementul este stocat în cache, care conțin și alte elemente, cum ar fi un aranjament container, toate sub-elementele sale să fie din cache într-un bitmap. Prin urmare, este necesară prudență atunci când adăugați în memoria cache ceva de genul Canvas; face acest lucru numai în cazul în care elementul canvas este mic și conținutul său sunt neschimbate.

După efectuarea acestei singură modificare simplă poate observa imediat diferența. Fereastra va apărea ușor mai lent. Dar, animația va avea loc mai lin, iar sarcina pe CPU va scădea în mod semnificativ. Acest lucru se poate stabili cu ușurință de către uita la managerul de activități: de multe ori încarcă o valoare apropiată de 100% poate fi redus la mai puțin de 20%.

De exemplu, imaginați-vă că în exemplul anterior, a doua cale de animație paralelă crește de zece ori față de dimensiunea inițială și apoi revine la dimensiunea inițială. Pentru a asigura o bună calitate, poate fi salvată în memoria cache imagine Cale bitmap cu dimensiuni de până la cinci ori mai mare decât dimensiunea curentă: