2011-09-26 12 views
8

Estoy desarrollando una aplicación de mapas como WPF. Tengo ~ 10,000 PathGeometry, Formas añadidas al lienzo. He agregado ScaleTransform y TranslateTransform para los controles de zoom y panorámica.Mejorando el rendimiento del lienzo de WPF

El problema al que me enfrento es que cuando hago zoom o giro, hay un ligero retraso. ¿Hay alguna forma de organizar los datos para que solo maneje las Formas que están visibles?

Cualquier sugerencia sobre hacerlo más eficiente será útil y apreciado.

Respuesta

7

Le sugiero que eche un vistazo a este interesante artículo, con el concepto de Canvas virtual: ZoomableApplication2: A Million Items. También tiene una demostración en vivo (xbap) en línea.

6

¿Qué tipo de cosas estás poniendo en el lienzo? Si usa pathGeometry, ¿los está encerrando en la clase Path? Si es así, Path tiene FrameworkElement en su jerarquía de superclase, que es responsable de la pérdida masiva de rendimiento.

Take a look at my question here. Aunque se trata de la clase Shape, pero la razón de la degradación del rendimiento es la misma, FrameworkElement.

Si lo hace, la solución es utilizar PathGeometry en su lugar, y encerrarlo en DrawingContext de un DrawingVisual utilizando el método DrawingContext.DrawGeometry().

Aquí hay algunos enlaces que deberían ayudar. Path Geometry

DrawingContext.DrawGeometry()

Optimizing Performance: 2D Graphics and Imaging

Y dibujar las formas sí mismo, utilizando la combinación de líneas, y otras cosas proporcionadas por las clases derivadas de la clase de geometría (ArcGeometry, PathGeometry etc).

Esto debería ayudar.

2

Si desea lo último en rendimiento para el dibujo inmediato en WPF, consulte WriteableBitmapEx. Esta es una excelente biblioteca de código abierto, a la que contribuí recientemente. proporciona capacidades de dibujo similares a GDI en WriteableBitmap y es compatible con Windows Phone, WPF y Silverlight. La API es simple, obtienes blitting, polígonos, líneas y formas simples, etc. Sin embargo, no obtendrás plantillas de datos ni pinceles de degradado.

Cuestiones relacionadas