У меня есть пользовательский элемент управления в C #. Я заметил, что вызов Refresh
намного медленнее, чем хотелось бы (около 0,1 мс), даже когда у меня пустая функция RePaint
. По сути, мое приложение обрабатывает сетку и обновляет каждую ячейку сетки. Это довольно неэффективное поведение по замыслу; при включении я хочу видеть, что на самом деле делается каждый шаг обработки, и каждый шаг заканчивается только изменением одной ячейки. Переключение двойной буферизации не имеет большого значения.
Может кто-нибудь дать совет?
В настоящее время лучшее улучшение, которое я придумал, - это заменить мой звонок на Refresh
звонком на Refresh2
. Последняя функция является точной копией Repaint
, за исключением двух строк, добавленных вверху, Graphics g = Graphics.FromHwnd(this.Handle); g.Clear(BackColor);
и замены e.Graphics
на g
. Я подозреваю, что в этом есть какой-то недостаток, но он снижает скорость рисования вдвое. Обратите внимание, что в элементе управления, с которым я работаю, нет подкомпонентов, поэтому такие вещи, как проверка, не так уж и важны.