Устранение артефактов обновления форм Windows - PullRequest
2 голосов
/ 03 ноября 2008

У нас довольно сложный графический интерфейс в формах Windows, использующих C # и .Net 2.0. Моя проблема заключается в том, что всякий раз, когда я перетаскиваю любое окно над графическим интерфейсом, оно оставляет артефакты над формой. Я не могу на всю жизнь понять, как это устранить. Я попытался включить двойную буферизацию, но это только помогает, но не устраняет проблему. Другие приложения, похоже, не имеют этой проблемы, и мне интересно, что мы делаем не так.

Обновление в ответах на ответы

Большая часть приложения просто использует набор сторонних элементов управления (Infragistics), расположенных на панели. Насколько я могу судить, в GUI-потоке ничего не делается, кроме базовой (не интенсивной работы с процессором) обработки щелчков мыши.

Ответы [ 2 ]

3 голосов
/ 03 ноября 2008

Возможно, вы выполняете слишком много работы в потоке графического интерфейса. Выгрузка некоторых работ в фоновые потоки освободит графический интерфейс для более быстрой обработки сообщений Windows.

0 голосов
/ 03 ноября 2008

Относительно ответа Джона Б., если ваше приложение много рисует, используя объект Graphics в .NET, эти методы довольно медленны по сравнению с вызовами Windows API.

Другая возможность состоит в том, что ваш графический интерфейс может не обновляться в событии OnPaint. Иногда пользовательский графический код обновляет поверхность рисования из события таймера, или же обновляет поверхность рисования только тогда, когда что-то меняется в том, что должно отображаться. Код, написанный так, кажется, работает большую часть времени, но создает проблему, которую вы описываете, когда другое окно перемещается над вашим окном.

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