Attualmente sto sviluppando uno strumento di visualizzazione che disegna forme WPF come percorsi, ellissi ecc. Su una tela. Ho già implementato un approccio virtualizzato in cui le forme vengono distrutte e create al volo a seconda della loro visibilità. Tuttavia, anche con solo 600 ellissi visibili, l'applicazione sembra faticare.Prestazioni WPF: visualizzazione di migliaia di percorsi/forme su una tela
Quali sono le opzioni per accelerare le cose? Sto pensando di rendere forme raggruppate (diciamo 500 alla volta) come bitmap trasparenti e di dipingerle solo sulla tela. Ma io non so se questa è una buona idea ... Da quanto ho capito questo richiede una sorta di hack, se sono state applicate le trasformazioni:
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);
Cosa succede ad usare una grande WritableBitmap? Questo sarebbe un altro approccio?
Attualmente sto utilizzando questo approccio: una classe VirtualPath che memorizza i dati del percorso e restituisce un WPF System.Windows.Shapes.Path non appena i suoi limiti sono visibili. – kitsune
Grazie per avermi segnalato StreamGeometry, non conoscevo ancora questa classe – kitsune
@kitsune, hai mai completato il trucco "virtualpath che restituisce un percorso non appena visibile"? Penso che potrei trarne beneficio in uno dei miei progetti –