@daniil14056

Как выводить графику в wpf, ПОЧЕМУ У МЕНЯ зависает окно на 1-2 секунды, после любого изменения размеров окна?

Попытка номер 2.
Простая программа, код ниже, рисую полигоны, потом вывожу, проблема в том что окно программы не может передвинуться на второй экран, а любое RISIZE окна, то зависание на 1-3 секунды, типа что за кривое WPF, или чего я не знаю.
Почему виснет окно, мое предположение что происходит перерисовка, то есть зачем-то заново выполнение всех drawLine.... Тогда почему, если я же в картинку передал уже нарисованный компонент DrawingVisual, или где встроенная буферизация директа.
DrawingVisual visual = new DrawingVisual();
DrawingContext dc = visual.RenderOpen();
 /// dc.Draw ...... рисую полигоны, при 10_000 и более полигонов НАСТУПАЕТ СМЭРТЬ
dc.Close();
DrawingImage di = new DrawingImage(visual.Drawing);
Image image = new Image();
image.Source = di;
Canvas.Children.Add(image);
  • Вопрос задан
  • 237 просмотров
Пригласить эксперта
Ответы на вопрос 3
1. Картинку рисуй в фоновом потоке, а выводи в основном
2. Не используй System.Drawing - он тормозной. Посмотри в сторону skia
Для 3d есть opengl и другие специальные api для рисования при помощи видеокарты.
Ответ написан
Комментировать
samodum
@samodum
Какой вопрос - такой и ответ
Трудоёмкие операции надо делать в отдельном потоке, а не в UI-потоке.
Поэтому и зависает.
Рискуешь получить ANR.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы