Как показать полосы прокрутки в элементе управления PictureBox? - PullRequest
10 голосов
/ 13 января 2011

Иногда у меня есть картинка, скажем, 100x100. Но изображение, которое он отобразит, на самом деле имеет размер 100x400.

Я не хочу увеличивать размер самой картинки. Вместо этого я хотел бы создать вертикальную полосу прокрутки (или горизонтальную, если необходимо).

Я не смог найти полосу прокрутки в наборе инструментов, поэтому, наверное, мне нужно ее кодировать. Но как? И мне все еще интересно, не ошибся ли я и не увидел полосу прокрутки на панели инструментов. Мои извинения тогда: (

Ответы [ 3 ]

19 голосов
/ 13 января 2011

Полагаю, вы могли бы добавить отдельные элементы управления полосой прокрутки и синхронизировать их Scroll события со смещением, при котором рисуется картинка в PictureBox, но это звучит как настоящая работа. Есть лучший способ.

  1. Добавьте элемент управления Panel к вашей форме и установите для его свойства AutoScroll значение "True". Это приведет к автоматическому отображению полос прокрутки, когда он содержит контент, который находится за пределами его видимых в настоящее время границ. .NET Framework позаботится обо всем за вас, без необходимости писать одну строчку кода.

  2. Перетащите элемент управления PictureBox в добавленный элемент управления Panel. Элемент управления Panel обнаружит, что один из его дочерних элементов управления больше, чем его. видимая область и отображение полос прокрутки, благодаря свойству AutoScroll. Когда пользователь перемещает полосы прокрутки, видимая часть изображения в вашем PictureBox будет автоматически отрегулирована. Магия.

(Причина использования элемента управления Panel в качестве контейнера заключается в том, что PictureBox не наследуется напрямую от базового класса ScrollableControl, что и обеспечивает свойство AutoScroll .)

3 голосов
/ 15 февраля 2012

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

2 голосов
/ 13 января 2011

В окне изображения нет автоматических полос прокрутки, но вы можете добавить элемент управления VScrollBar (и HScrollBar) к форме и обрабатывать прокрутку изображения вручную, перерисовывая его с другим смещением при каждом запуске события прокрутки.1001 *

...