@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);
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 3
@vabka Куратор тега C#
Токсичный
1. Картинку рисуй в фоновом потоке, а выводи в основном
2. Не используй System.Drawing - он тормозной. Посмотри в сторону skia
Для 3d есть opengl и другие специальные api для рисования при помощи видеокарты.
Ответ написан
samodum
@samodum
Какой вопрос - такой и ответ
Трудоёмкие операции надо делать в отдельном потоке, а не в UI-потоке.
Поэтому и зависает.
Рискуешь получить ANR.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
НПК «Катрен» Новосибирск
от 90 000 ₽
ЧИТАЙ-ГОРОД Москва
от 130 000 до 180 000 ₽
WB—Tech Москва
от 140 000 до 160 000 ₽
01 мар. 2021, в 16:46
150000 руб./за проект
01 мар. 2021, в 16:33
21000 руб./за проект
01 мар. 2021, в 16:24
15000 руб./за проект