Мне нужно нарисовать много Shape (около 1/2 сотни тысяч) в качестве детей [Холст] [2]. Я делаю это в своем приложении WPF, разделяя работу на две части: во-первых, я создаю фигуры, устанавливая свойства каждого из них (например, Margin, Fill, Width и т. Д.) После добавления фигур в качестве дочерних элементов Canvas.Как улучшить производительность рендеринга Canvas?
MyCanvas.Children.Add(MyShape)
Теперь я хочу, чтобы улучшить производительность второй части, потому что, когда я рисовать фигуры мое приложение блокируется в течение длительного периода времени. Поэтому я попытался использовать Dispatcher и его метод [BeginInvoke] [4] с разными [приоритетами] [5]: только если я использую приоритет фона, основное приложение не блокируется, в противном случае приложение остается заблокированным, а «картинка» - не отображается, пока все фигуры не будут добавлены в мой холст, но если я использую приоритет фона, очевидно, все будет медленнее. Я также попытался создать новый поток вместо использования диспетчера, но существенных изменений не произошло.
Как я могу исправить эту проблему и вообще улучшить производительность моего приложения, когда добавляю свои фигуры в Canvas?
Спасибо.
Вы попробовали DrawingVisual? –
Нет. Не могли бы вы привести пример использования DrawingVisual вместо формы, например Ellipse или Path. Например, как я могу добавить на мой Canvas [this] (http://msdn.microsoft.com/en-us/library/ms745546.aspx) путь с помощью DrawingVisual? – gliderkite
Да, есть отличная информация о Google. Вот ссылка, с которой вы начали: http://msdn.microsoft.com/en-us/magazine/dd483292.aspx –