В настоящее время я разрабатываю инструмент визуализации, который рисует формы WPF, такие как пути, эллипсы и т.д. на холсте. Я уже реализовал виртуализированный подход, при котором Shapes уничтожаются и создаются "на лету" в зависимости от их видимости. Однако даже при видимости всего лишь 600 эллипсов приложение, похоже, работает.
Каковы мои возможности ускорить работу? Я думаю, что рендеринг сгруппированных фигур (пусть говорят по 500 за раз) как прозрачные растровые изображения и только рисование их на холсте. Но я не знаю, хорошая ли это идея... Из того, что я собираю, это требует какого-то взлома, если бы были применены преобразования:
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);
Как использовать большой WritableBitmap? Это будет другой подход?