Правильный способ обойти длинное событие onPaint в C # winforms? - PullRequest
0 голосов
/ 29 мая 2018

В настоящее время я работаю над графическим приложением C # winforms.Чтобы добраться до точки, обработчик событий Paint для моего графического элемента управления должен построить тысячи точек, что может занять несколько секунд.В течение этого времени приложение заморожено.Моя цель заключается в следующем: если пользователь изменил, какие данные будут отображаться при построении более старых данных, он остановится в середине рисования более старых данных и начнет рисовать новые данные.Какой правильный способ сделать это или это что-то еще, что я полностью пропускаю?Я пытался сделать мой вопрос как можно более четким.

1 Ответ

0 голосов
/ 03 июля 2019

Ответ на ваш вопрос заключается в двойной буферизации.Вам не нужно знать все детали двойной буферизации, чтобы использовать ее.Просто установите для свойства значение true, как показано ниже, чтобы включить его в элементе управления.

 MyGraphPanelControl.DoubleBuffered = true;

Очевидным недостатком является использование памяти, но это значительно увеличит «скорость» отображения элементов на панели.Как и многие вещи в области компьютерных наук, вы торгуете памятью для скорости и наоборот.

Кроме того, чтение этого от Microsoft даст вам более полное представление о том, как использовать двойной буфер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...