Пользовательский элемент управления C # перерисовывается медленно - PullRequest
3 голосов
/ 18 сентября 2010

У меня есть программа C # Forms с общим количеством элементов управления около 200.Некоторые из них находятся в пользовательских элементах управления, которые я добавил в форму.Когда я запускал свою программу на своем домашнем компьютере, двухъядерном AMD X64, 2,0 ГГц с картой ATI X1600, программа работала нормально.Это быстро и перерисовать не проблема.

Когда я поместил эту программу на свой рабочий стол, четырехъядерный процессор Intel 2,4 ГГц, 4 ГБ ОЗУ и NVidia Gefore 8800GT, при перерисовке он замедлился до ползучести.Может ли это быть проблемой с драйвером?

У меня включена двойная буферизация для всех моих пользовательских элементов управления и форм.Там нет никакой помощи.

Я читал эту ветку, но моя ситуация не та же: Сверх медленный пользовательский элемент управления C #

Ответы [ 2 ]

0 голосов
/ 19 октября 2010

Важно отметить, что элементы управления рисованием похожи на рисование на двухмерной поверхности, перекрывая при необходимости. Если элемент управления не понимает такие вещи, как отсечение прямоугольника, он может рисовать часть элемента управления, которая не видна (особенно элементы управления, скрытые в другом контейнере, например TabPage ), тратя впустую ценные циклы ЦП. Кроме того, элементы управления с прозрачностью BackColor будут пытаться имитировать прозрачность, принимая BackColor своего родительского элемента управления. Поскольку все это происходит в GDI +, который не аппаратно ускоряется, наличие множества элементов управления, демонстрирующих такое поведение, усугубит замедление.

0 голосов
/ 12 октября 2010

дело в том, что ".SuspendLayout ();"на самом деле не перестать рисовать.Я не могу вспомнить заявление, но я верю, что вы можете получить его на Google.и попробуйте использовать .AddRange может помочь.

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