У меня возникли проблемы с пониманием правильного способа создания прокручиваемой области в пользовательском элементе управления с использованием C#, .NET 3.5 и GDI+.
Есть ли какая-либо документация от Microsoft о правильном способе сделать это? Есть ли где-нибудь в сети достойный учебник для начинающих?
В основном меня беспокоит следующее: если я создам большой графический холст в памяти, каковы конкретные детали того, насколько большим холст может (и должен быть)? Каковы соображения производительности? Какую часть прокручиваемой области я должен визуализировать заранее?
Например, если бы я визуализировал очень большой графический график из уже существующих данных, должен ли я просто отображать ВЕСЬ график в графическую память, а затем помещать его в «прокручиваемую» область? Или это исчерпает доступную графическую память и начнет запись в файл подкачки?
Разъяснение:
Например, ваш веб-броузер не «перерисовывает» клиентскую область каждый раз, когда вы прокручиваете страницу, перерисовывая все элементы. Статические элементы страницы рендерятся один раз на большую поверхность, а при перемещении полосы прокрутки начальное смещение пререндера просто модифицируется.
Именно такого поведения я и добиваюсь. Я не хочу «рисовать содержимое, которое будет между начальным и конечным значениями для моего диапазона прокрутки» в событиях рисования.
1 ответ
Если вы говорите о WinForms - получите управление от ScrollableControl. Определите размер клиента и просто закрасьте соответствующую часть в OnPaint.
Элемент управления обрабатывает все детали прокрутки для вас
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.