2011-08-11 19 views
6

Como verá la primera imagen es del tamaño de (1024 * 768) y se muestra correctamente en la caja de imágenes y en el segundo caso el tamaño de la imagen es (1600 * 900) y se muestra en la mitad del recuadro y falta el resto. Por lo tanto, no me gustaría obtener esa imagen en el recuadro de imagen sin importar el tamaño y aunque sea mayor que el tamaño del recuadro. Necesito escalar ese recuadro. Image.Así, ¿cómo hago eso? Y una cosa más es que necesito cambiar el tamaño de la caja de imágenes automáticamente cuando la imagen se carga tal como lo vemos en el efecto de la caja de luz. http://www.lokeshdhakar.com/projects/lightbox2/ --------> example .Imagen más grande para caber en la caja de imágenes

¡Cualquier ayuda será apreciada!

Esto es lo que obtendré.

enter image description here

enter image description here

Respuesta

5

Si se trata de una aplicación de Windows Forms, puede establecer la propiedad SizeMode del PictureBox a PictureBoxSizeMode.Zoom. Tenga en cuenta que esto aumentará el tamaño de las imágenes más pequeñas para llenar el cuadro, por lo que es posible que desee medir primero la imagen, para comprobar si el borde es demasiado largo y luego establecer SizeMode en PictureBoxSizeMode.Zoom o PictureBoxSizeMode.Normal.

+0

Sí, lo he hecho y funcionó, pero necesito mostrarlo con su ancho y alto real y al mismo tiempo necesito escalar la imagen para que encaje en eso, como he dado un ejemplo que se asemeja a lightbox con un enlace y necesito lograr eso. –

+1

@volety: en su pregunta usted indica que necesita escalarlos. No puede escalar y tenerlos en su tamaño real al mismo tiempo. –

+0

Necesito una animación simple en el cuadro de imagen para que se expanda al tamaño de la imagen entonces, ¿cómo hago eso? –

3

Sé que esto está marcado respondió, pero escribí esto para una de mis propias aplicaciones. Espero que ayuda a alguien ..

Private Sub ScaleImage(ByVal p As PictureBox, ByRef i As Bitmap) 
    If i.Height > p.Height Then 
     Dim diff As Integer = i.Height - p.Height 
     Dim Resized As Bitmap = New Bitmap(i, New Size(i.Width - diff, i.Height - diff)) 
     i = Resized 
End If 
    If i.Width > p.Width Then 
     Dim diff As Integer = i.Width - p.Width 
     Dim Resized As Bitmap = New Bitmap(i, New Size(i.Width - diff, i.Height - diff)) 
     i = Resized 
End If 

End Sub

0

Las dos maneras más fáciles de encajar una imagen a cualquier tamaño de cuadro de imagen es:

: para establecer la imagen como imagen de fondo O - para establecerlo como una imagen de cuadro de imagen luego establecer el modo de tamaño a StretchImage

1.Imagen de fondo

-uso del BackgroundImage propiedad del cuadro de imagen

 picturebox.BackgroundImage = Image.FromStream(New IO.MemoryStream(CType(data, Byte()))) 

-Entonces Ajuste su BackgroundImageLayout a tramo como esto:

 picturebox.BackgroundImageLayout = ImageLayout.Stretch 
  1. Imagen -usar imagen propiedad o f PictureBox

    picturebox.Image = Image.FromStream(New IO.MemoryStream(CType(data, Byte()))) 
    

-Entonces establecerá su SizeMode a StretchImage como esto:

picturebox.SizeMode = PictureBoxSizeMode.StretchImage 

Esto hará que cualquier accidente cerebrovascular Dibujo/Imagen/lienzo (convertir en matriz de bytes) ajuste de acuerdo con el alto y el ancho de la caja de imágenes

Hope This Helps :)

Cuestiones relacionadas