Mostrar imagen de un formulario en una ventana aparte

Tengo un formulario con el cual fuardo, muestro y consulto. Mis imágenes las trabsformo en arreglos de bytes para guardarlas en la base de datos. Lo que quiero es que al dar doble click en el picturebox pueda mostrar la imagen que se encuentra ahí en otro pinturebox que tengo en otra ventana, esto es fácil así nada más, lo que realmente no he po podido hacer es mostrar la imagen con su tamaño real sin que se desbord de la ventana donde esta el picture box. Osea, queri que la ventana se adapt al tamaño que adopt el picturebox y si la imagen aun así no cabe en la ventana me permita usar barrar de desplazamiento para ver toda la imagen. Algo como el visor de imágenes de windows.
O si puedes decirme como enviarle al visor de imágenes de windows mi imagen para que la muestre mejor.
Pero ten en cuenta que no estoy usando la ubicación de la imagen sino que el arreglo de bytes lo asigno al picturebox para mostrar la imagen.

1 Respuesta

Respuesta
1
En el Picture Box tendrias que hacer un arreglo dimensional, para poder adaptar tu imagen al tamaño que tiene el Picture. Mmm algo laborioso mas no complicado ni aburrido.
Por qeu no intentas cambias el Picture box por un Image y asignas su propiedad Stretch en True y asi la imagen por mas grande o pequeña que sea se ajustara perfectamente al tamño del Image.
Si no te resulta así, pues me dices y te ayudo a crear un algoritmo para adaptar las dimensiones de la imagen en el picture box.
Por lo general las imágenes que se utilizaran serán de gran tamaño ya que serán recortes de periódico y lo que se quiere con esto es que sea posible ver con claridad el recorte y se pueda leer. Si simplemente ajusto la imagen con el strech no podre distinguir la imagen. Necesito mostrar la imagen en su tamaño real.
con autosize el picture boxse ajusta al tamaño real de la imagen pero por el tamaño de las imagenes es posible que las mismas no quepan en la ventana tanto en ancho como en alto.
Como podria hacer?
Para que la ventana donde se encuentra el picturebox cambie con el tamaño de la imagen coloque en el form load el siguiente código
Me.Width = pbxImg.Width + 30
Me.Height = pbxImg.Height + 75

Sin embargo esto podría hacer que al mostrar una imagen muy grande la ventana pudiera no caber en la pantalla... mmm...
Al menos ya es parte de la solución.
Espero tu ayuda.
Ah por cierto que no t lo he dicho desde que empec con la pregunta... estoy usando VB 2005
En tu formulario Vas a poner lo sig:
2 PictureBox. Uno del Tamaño Máximo al que se va poder abrir la imagen (PicContenedor), y uno más pequeño (no importa mucho el tamaño) y se llamara (Picture2).
2 barras de scroll llamadas, (HScroll1 y VScroll1). Estas colocarlas dentro del PicContenedor. Además seleccionarlas y con el menú derecho elegir la opción " Traer al frente ".
Nota: no importa el tamaño que se le coloquen a las scrollbar en tiempo de diseño, ni tampoco la posición ya que se ajustan en tiempo de ejecución.
Colocarle el Autosize del Picture2 en True.
Vas a poner el sig. Código
Option Explicit
Private Declare Function GetSystemMetrics _
Lib "user32" ( _
ByVal nIndex As Long) As Long
Private Const SM_CYHSCROLL = 3
Private Const SM_CXVSCROLL = 2
Private Sub SetearScroll()
HScroll1.LargeChange = 15
VScroll1.LargeChange = 15
HScroll1.Max = (Picture2.Width - picContenedor.ScaleWidth _
+ VScroll1.Width) / 120 + 1
VScroll1.Max = (Picture2.Height - picContenedor.ScaleHeight + _
HScroll1.Height) / 120 + 1
End Sub
Private Sub Form_Load()
'Inicializa los scrolbar (los posiciona )
IniciarPicture
End Sub
Private Sub IniciarPicture()
Dim sngVSCWidth As Single, sngHSCHeight As Single
'Colocamos le picture2 en la parte superior izquierda dentro del picContenedor
Picture2.Move 0, 0
'redimensinado del scrollbar
sngVSCWidth = GetSystemMetrics(SM_CXVSCROLL) * Screen.TwipsPerPixelX
sngHSCHeight = GetSystemMetrics(SM_CYHSCROLL) * Screen.TwipsPerPixelY
HScroll1. Move 0, picContenedor.ScaleHeight - sngHSCHeight, _
picContenedor. ScaleWidth - sngVSCWidth, sngHSCHeight
VScroll1. Move picContenedor. ScaleWidth - sngVSCWidth, 0, _
sngVSCWidth, picContenedor. ScaleHeight
'Inicializa los scrolbar (valores Max y Largchange)
SetearScroll
End Sub
Private Sub HScroll1_Change()
Picture2.Left = -HScroll1.Value * 120
End Sub
Private Sub HScroll1_Scroll()
HScroll1_Change
End Sub
Private Sub VScroll1_Change()
Picture2.Top = -CSng(VScroll1.Value) * 120
End Sub
Private Sub VScroll1_Scroll()
VScroll1_Change
End Sub
La Imagen la tendrás que cargar en el Picture2.
Nota 2: ahora mismo el código lo hice en vb6 pues es el que tengo instalado en mi pc, así que tendrás que adaptarlo al 2005, no es gran diferencia.
Espero que te sirva, si no pues me avisas y nos la ingeniamos con otro código
En estas lineas de código el compilador me dice que no son miembros de system.windows.forms.PictureBox en el caso de Scale y System.windows.Forms.Screen en el caso de TwipsPerPixel.

PicContenedor.ScaleWidth
PicContenedor.ScaleHeight
Screen.TwipsPerPixelY
Screen.TwipsPerPixelX

Y dice que Picture2.move(0,0) es un evento y no puede ser llamado directamente. "Use a 'RaiseEvent' statement to raise an event" lo que me imagino que puedo hacer es decirle que su ubicación va a ser igual a la ubucacion del PicContenedor con
Picture2.Location=PicContenedor.Location
Ya que según tu comentario lo que quieres es colocarlo exactamente ahí.
Para otras lineas encontré la equivalencia pero para estas no. =(
De verdad agradezco mucho tu interés... thx... aquí sigo...
Como te comentaba aquí en el trabajo no tengo instalada la version 2005. La tengo en mi casa, si me das oportunidad el fin de semana te resuelvo el problema desde mi casa igual mientras tanto puedes intentar por modificarle las partes que no te funcionan.
Por mi no hay problema por esperar porque yo estoy haciendo esto en el trabajo también... y mientras tanto estoy probando e investigando equivalencias de código.
Muchas gracias por tu ayuda... aquí seguimos.
Hola adán... Estoy esperando tu respuesta... mmm...
A ver si se te hac familiar esta página...
http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/108-picture-scrollbar.htm
Aun así espero tu ayuda para adaptarlo al VB 2005...
No he podido corregir el código, y si se me hace familiar esa página de ahí saco muchos códigos para basarme en ellos y ajustarlos a las necesidades de mis programas.
Te paso otra pag. Igual ahí también puedas sacar información útil en lo que tengo oportunidad de adecuar el código que te mande.
www.lawebdelprogramador.com
www.mundoprogramacion.com
Hechales un vistazo a ver que te encuentras, la vdd he andado algo ocupadon y por eso no he respondido como debiera

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas