Есть вот такой значок.
Path path = new Path();
path.Data = Geometry.Parse("M0,-7 l0,12 -1,-1 0,-1 l-2,-4 3,1 M0,9 A9,9,360,1,1,0.01,9 M0,-9 v-5 M9,0 h5 M0,9 v5 M-9,0 h-5")
начал генерировать таких значков 500 штук и двигать их, чтобы посмотреть скорость отрисовки. получил 20 FPS
Тогда решил отрисовку делать через Visual
public void Draw(DrawingContext context)
{
context.DrawGeometry(m_brush, m_pen, Geometry.Parse("M0,-7 l0,12 -1,-1 0,-1 l-2,-4 3,1 M0,9 A9,9,360,1,1,0.01,9 M0,-9 v-5 M9,0 h5 M0,9 v5 M-9,0 h-5"));
}
Удивительный эффект, но производительность упала в двое.
Задача состоит в том чтобы отобразить множество графических объектов такого рода на Canvas и перемещать их в реальном времени. Можете посоветовать способ как производительней написать?
PS: был проделан тест: рисовал линии с помощью Line и c помощью DrawingVisual. при 25 FPS в первом случае рисовалось 200 линий, а во втором 1400.