2011-10-05 13 views
5

¿Cuál es la mejor forma de administrar una gran cantidad de imágenes (10,000+) en WPF? Esto es para un editor de mapas en mosaico 2d similar a este: http://www.mapeditor.org/.Problemas con la representación de un mapa de mosaico grande en WPF

Por el momento tengo un lienzo con todas las fichas como una imagen y un cuadro de lista que contiene las diferentes imágenes para elegir. Cada mosaico se agrega al lienzo como elementos secundarios y luego se almacena en una lista para acceder más tarde. Pinta en el lienzo configurando la propiedad Origen de un mosaico en el seleccionado en el cuadro de lista. Funciona bien con alrededor de 50x50 mapas de mosaico, pero cualquier cosa por encima de eso provoca retrasos en la carga, en general la aplicación lenta.

¿Alguna sugerencia sobre esto? QT tal vez sería más adecuado en lugar de wpf?

Gracias de antemano

Respuesta

6

Echa un vistazo a Implementing virtualized panel serie de artículos.

paneles virtualizados son eficientes, porque:

  • Sólo los elementos que se muestran (y unos cuantos más en torno a las fronteras para permitir el desplazamiento suave) se encuentran en la memoria (y se hace).

  • Los elementos se reutilizan, en lugar de crearse y descartarse repetidamente: una celda vieja simplemente se llena con contenido nuevo (se proporciona con el nuevo DataContext) y se utiliza en una nueva ubicación.

También puede intentar utilizar cuadrícula de datos de WPF para ello, se admite la virtualización de la caja y es esencialmente lo que estás tratando de hacer.

WPF es ciertamente capaz de hacer esto, si se implementa correctamente (si puede hacerlo en JavaScript, también puede hacerlo en WPF).

Cuestiones relacionadas