2011-10-05 7 views
5

Qual è il modo migliore per gestire una grande quantità di immagini (10.000+) in WPF? Questo è per un editore di mappe tile 2D simile a questo: http://www.mapeditor.org/.Problemi con il rendering di una grande mappa affiancata in WPF

Al momento ho una tela con tutte le tessere come un'immagine e una casella di riepilogo che contiene le diverse immagini tra cui scegliere. Ogni tessera viene aggiunta alla tela come bambini e quindi archiviata in un elenco per l'accesso successivo. Si dipinge nell'area di disegno impostando la proprietà Sorgente di una tessera su quella selezionata nella casella di riepilogo. Funziona bene con circa 50x50 mappe di tile, ma qualsiasi cosa sopra che causa ritardi di caricamento, in generale un'applicazione lenta.

Qualche suggerimento su questo? QT potrebbe essere più adatto invece di wpf?

Grazie in anticipo

risposta

6

Scopri Implementing virtualized panel serie di articoli.

pannelli virtualizzati sono efficienti, perché:

  • gli elementi visualizzati (e qualche extra attorno ai confini per consentire lo scorrimento uniforme) sono solo nella memoria (e resi).

  • Gli elementi vengono riutilizzati, anziché essere ripetutamente creati e scartati: una vecchia cella viene semplicemente riempita di nuovo contenuto (fornito con nuovo DataContext) e utilizzata in una nuova posizione.

Si potrebbe anche provare a utilizzare DataGrid di WPF per questo, supporta la virtualizzazione fuori dalla scatola ed è essenzialmente che cosa stai cercando di fare.

WPF è certamente in grado di farlo, se implementato correttamente (se è possibile farlo in JavaScript, lo si può fare anche in WPF).