Actualmente estoy desarrollando una herramienta de visualización que dibuja formas de WPF como caminos, elipses, etc. en un lienzo. Ya implementé un enfoque virtualizado donde las formas se destruyen y se crean sobre la marcha en función de su visibilidad. Sin embargo, incluso con solo 600 elipses visibles, la aplicación parece tener dificultades.Desempeño de WPF: mostrar miles de rutas/formas en un lienzo
¿Cuáles son mis opciones para acelerar las cosas? Estoy pensando en representar formas agrupadas (digamos 500 a la vez) como bitmaps transparentes y solo pintarlas en el lienzo. Pero no sé si eso es una buena idea ... Por lo que sé esto requiere algún tipo de corte, si se aplican las transformaciones:
VisualBrush shapeBrush = new VisualBrush(shape);
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
using (drawingContext)
{
drawingContext.DrawRectangle(shapeBrush, null, new Rect(new Point(0, 0), new Point(actualWidth, actualHeight)));
}
renderTarget.Render(drawingVisual);
¿Qué pasa con el uso de una gran WritableBitmap? ¿Ese sería otro enfoque?
Actualmente estoy utilizando este enfoque: una clase VirtualPath que almacena los datos de ruta y devuelve un WPF System.Windows.Shapes.Path tan pronto como sus límites son visibles. – kitsune
Gracias por indicarme StreamGeometry, todavía no conocía esta clase – kitsune
@kitsune, ¿alguna vez completó su truco "virtualpath que devuelve una ruta tan pronto como sea visible"? Creo que podría beneficiarme de esto en uno de mis proyectos –