2011-01-13 3 views
10

Иногда у меня есть картинка, позволяющая говорить 100x100. Но изображение, которое будет отображаться, на самом деле 100x400.Как показать полосы прокрутки в элементе управления PictureBox?

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

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

ответ

19

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

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

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

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

+2

Мне пришлось установить свойство 'SizeMode' 'PictureBox' в 'AutoSize', чтобы это решение работало – Niroshan

+1

И я бы хотел отметить, что PictureBox нельзя состыковать в панели. – miroxlav

2

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

+1

Я слишком ленив, чтобы сделать это. ;-) –

+0

Ваш путь намного быстрее, но вы не можете наслаждаться разочарованием в определении способа смещения изображения при прокрутке или перемещении полос прокрутки. – xpda

+0

Я не хочу разочарования: (......., но у вас там хорошая идея. – Voldemort

3

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

Смежные вопросы