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

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

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

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

Разъяснение:

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

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

2
James 10 Мар 2011 в 03:05

1 ответ

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

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

1
John Arlen 10 Мар 2011 в 03:12