Graphics.Draw *, AutoScroll & Culling - PullRequest
       27

Graphics.Draw *, AutoScroll & Culling

0 голосов
/ 15 декабря 2011

Я реализовал пользовательский элемент управления в C # / Winforms, который делает такие вещи, как подсветка синтаксиса и автозаполнение.Я использую AutoScroll для управления прокруткой, и она прекрасно работает.

В настоящее время я вообще не оптимизировал (конечно, оптимизация важна, но я делаю это в последнюю очередь; функциональность - это то, что мне нужно в первую очередь),Я выполняю рендеринг огромных документов, и каждое нажатие клавиши повторно анализирует уязвимую строку, чтобы убедиться, что подсветка синтаксиса последовательна.

Прямо сейчас в моем методе с большой мясной краской я рисую каждую строку, ключевое слово и т. Д., Дажеесли он находится за пределами области клипа.Но независимо от того, насколько большой документ и сколько у меня комбинаций ключевых слов / выделенных фрагментов, он все равно работает чертовски быстро с небольшим объемом памяти и загрузкой ЦП.

Поэтому мой вопрос - выполните Graphics.Draw* методы делают какой-либо выбор?Например: если AutoScrollPosition находится далеко внизу документа & I Graphics.DrawString ( вставить некоторые координаты за пределы области рисования ), выполняется ли какая-либо фактическая работа?Также обратите внимание, что я запускаю VS на Win 7 внутри виртуальной машины, и она все еще работает быстро.Не то чтобы это проблема сейчас, но было бы неплохо иметь в виду на потом, когда дело доходит до фазы оптимизации.: D

Ура, Аарон

1 Ответ

1 голос
/ 15 декабря 2011

Исходя из личного опыта написания игр, использующих методы Graphics.Draw *, вы заметите увеличение скорости, если будете выполнять собственную проверку границ перед вызовом методов рисования.

Попытка отрисовки объектов вне экрана быстрее, чем отрисовкавещи на экране, но все же заметно медленнее, чем их вообще не рисовать.

...