2011-01-13 38 views
10

A veces, tengo un cuadro de imagen digamos 100x100. Pero la imagen que mostrará es en realidad 100x400.¿Cómo puedo mostrar las barras de desplazamiento en un control PictureBox?

No deseo aumentar el tamaño de la misma. En cambio, me gustaría crear una barra de desplazamiento vertical (u horizontal si es necesario).

No pude encontrar una barra de desplazamiento en la caja de herramientas, así que supongo que tengo que codificarla. ¿Pero cómo? Y todavía me pregunto si no cometí un error y no vi la barra de desplazamiento en la caja de herramientas. Mis disculpas entonces :(

Respuesta

19

supongo que podría añadir controles de la barra de desplazamiento separados y sincronizar sus Scroll eventos con el desplazamiento a la que se dibuja la imagen en el PictureBox, pero que suena como el trabajo real. No hay una mejor manera.

  1. Agregue un control Panel a su formulario y establezca AutoScroll property en "Verdadero". Esto hará que el control muestre automáticamente barras de desplazamiento cuando contiene contenido que se encuentra fuera de sus límites visibles actualmente. .NET Framework se encargará de todo para usted bajo las sábanas, sin tener que escribir una sola línea de código.

  2. Arrastre y suelte su control PictureBox dentro del control Panel que acaba de agregar. El control Panel detectará que uno de sus controles secundarios es más grande que su área visible y muestra las barras de desplazamiento, gracias a la propiedad AutoScroll. Cuando el usuario mueve las barras de desplazamiento, la porción de la imagen en su PictureBox que está visible se ajustará automáticamente. Magia.

(La razón por la que tiene que utilizar un control Panel como contenedor se debe a PictureBox no hereda directamente de la clase ScrollableControl base, que es lo que proporciona la propiedad AutoScroll.)

+2

Tuve que establecer la propiedad 'SizeMode' de 'PictureBox' en 'AutoSize' para que esta solución funcione – Niroshan

+1

Y me gustaría para tener en cuenta que PictureBox no se puede acoplar en el Panel. – miroxlav

2

No hay barras de desplazamiento automáticas en un cuadro de imagen, pero puede agregar el control VScrollBar (y HScrollBar) al formulario y manejar la imagen desplazándose manualmente redibujándola en un desplazamiento diferente cada vez que evento de desplazamiento se dispara.

+1

Soy demasiado perezoso para hacer esto. ;-) –

+0

Tu camino ES mucho más rápido, pero no puedes disfrutar de la frustración de averiguar de qué manera compensar la imagen cuando se desplaza o cuándo mover las barras de desplazamiento. – xpda

+0

No quiero la frustración: (....... pero tienes una buena idea allí. – Voldemort

3

Probé esto y funcionó bien Pero noté que si el cuadro de imagen está acoplado en el panel, el cuadro de imagen se ajusta automáticamente al tamaño del panel principal, y no se puede configurar más grande (al menos no de ninguna manera que pueda encontrar). Esto derrota el propósito de la técnica. Entonces, coloque el cuadro de imagen en el panel, pero no lo acople, y funcionará perfectamente.

Cuestiones relacionadas