Прокручиваемые элементы управления и области в .NET с GDI + - PullRequest
2 голосов
/ 10 марта 2011

У меня проблемы с пониманием правильного способа создания прокручиваемой области в пользовательском элементе управления с использованием C #, .NET 3.5 и GDI +.

Есть ли какая-либо документация от Microsoft о том, как это сделать??Есть ли в сети достойный учебник для начинающих?

В основном меня беспокоит: если я создаю большой графический холст в памяти, каковы конкретные детали относительно того, насколько большой холст может (и должен быть)?Каковы соображения производительности?Какую часть прокручиваемой области я должен визуализировать заранее?

Например, если я рендерил очень большой графический график из уже существующих данных, я должен просто отобразить ВЕСЬ график в графическую память, а затем скопировать егов «прокручиваемую» область?Или это исчерпало бы доступную графическую память и начало записи в файл подкачки?

Уточнение:

Например, ваш веб-браузер не «перерисовывает» клиентскую область при каждой прокрутке.путем повторного рендеринга всех элементов.Статические элементы страницы визуализируются один раз на большую поверхность, и когда вы перемещаете полосу прокрутки, начальное смещение предварительного рендеринга просто изменяется.

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

1 Ответ

1 голос
/ 10 марта 2011

Если вы говорите о WinForms - получите контроль от ScrollableControl.Определите размер клиента и просто нарисуйте соответствующую часть в OnPaint.

Элемент управления обрабатывает все детали прокрутки для вас

...