MDI con imagen

Iniciado por Gorky, 27 Noviembre 2006, 13:21 PM

0 Miembros y 1 Visitante están viendo este tema.

Gorky

Buenas foreros. Creo que lo que vengo a preguntar no tiene posible solucion.

Quisiera poner una imagen de fondo en un formulario MDI. Se que esto es posible. Lo que ocurre es que te la pone en la esquina superior izquierda y yo lo que quiero es que me la coloque ocupando todo el fondo y que cuando se redimensione el formulario que tambien lo haga la imagen.
Por lo tanto lo que a mi se me ha ocurrido es crear un formulario flotante sin bordes y colocarle ahi la imagen con la propiedad stretch = true. Despues me he ido al evento Resize el formulario MDI y he igualado las propiedades Height y Width tanto de la imagen como del formulario flotante con las del formulario MDI de esta forma:
Private Sub MDIForm_Resize()
frmImagen.Height = Me.Height
frmImagen.ScaleHeight = Me.ScaleHeight
frmImagen.ScaleWidth = Me.ScaleWidth
frmImagen.Width = Me.Width
frmImagen.imgLogo.Width = frmImagen.Width
frmImagen.imgLogo.Height = frmImagen.Height
End Sub

Esta idea seria correcta si no fuese por un pequeño fallo: el evento Resize no se activa cuando maximizamos el formulario. Sin embargo si que funciona bien cuando tiramos de los bordes para cambiar el tamaño del formulario.

Conoceis algun modo de conseguir mi proposito?

jrhomer

Cuando se maximiza conoces el tamaño.... aunque no se active el evento resize... puedes ponerlo en el evento "activate".
ups!!

Gorky

Cuando a las 20:30 llegue a mi casa lo probare.Gracias.

Ironhorse

El evento Resize se dispara siempre, incluso al maximizar, minimizar o restaurar.
Pégense una vuelta por Cracton :)

Gorky

Cita de: jrhomer en 27 Noviembre 2006, 17:22 PM
Cuando se maximiza conoces el tamaño.... aunque no se active el evento resize... puedes ponerlo en el evento "activate".

Eso me funciona a medias. Como se inicia en maximizado y es en ese momento cuando se activa pues funciona. Sin embargo si restauro la ventana no se activa. Alguna otra solucion?

Citar
El evento Resize se dispara siempre, incluso al maximizar, minimizar o restaurar.

Eso pensaba yo pero me he dado cuenta de que es un error.

CeLaYa

y porque no pones un picture box, dentro del PictureBox un ImageBox con la propiedad Stretch = true y usas los eventos Resize del form y del picture para poner el tamaño de la imagen

en las propiedades de los controles pones
Picture1:
Aling = 3

Image1:
Stretch = true

Private MDIForm_Resize()
   picture1.width = me.scalewidth
end sub

Private sub Picture1_Resize()
   Image1.with = picture1.ScaleWidth
   Image1.Height = picture1.ScaleHeight
end sub
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

Gorky

Cita de: CeLaYa en 27 Noviembre 2006, 21:11 PM
y porque no pones un picture box, dentro del PictureBox un ImageBox con la propiedad Stretch = true y usas los eventos Resize del form y del picture para poner el tamaño de la imagen

en las propiedades de los controles pones
Picture1:
Aling = 3

Image1:
Stretch = true

Private MDIForm_Resize()
   picture1.width = me.scalewidth
end sub

Private sub Picture1_Resize()
   Image1.with = picture1.ScaleWidth
   Image1.Height = picture1.ScaleHeight
end sub

Creo que es eso lo que he hecho. No estoy seguro porque no tengo el proyecto delante. Lo de la propiedad Strech si que lo he hecho. Sin embargo algunas cosas no son exactamente iguales. Cuando llegue a mi casa lo compruebo. Gracias.

Gorky

Ya esta solucionado. Tampoco era como Celaya decia. Sin embargo me ha servido de ayuda. Posteo el codigo para que quien quiera lo pueda hacer.
Private Sub MDIForm_Resize()
Picture1.Width = Me.Width
Image1.Height = Picture1.Height
Image1.Width = Picture1.Width
End Sub

Gorky

Ahora tengo un nuevo problema. Lo anterior ya esta solucionado. Sin embargo cuando hago:
Form1.show
no se muestra.
Supongo que el problema es que se muestra por detras del PictureBox. Para todo esto tengo que dar como dato que el resto de los formularios estan puestos como MDIChild. Sin embargo si los pongo como formularios normales no se me produce este problema pero pierdo las caracteristicas de un Child. Se os ocurre alguna solucion para poder seguir siendo MDIChild y que aparezca por encima del PictureBox (supongo que es que aparece por detras pero es que yo ni lo veo)? Gracias.

CeLaYa

a ver ya no entendi bien lo que estas haciendo. Quieres tener una imagen de fondo en el MDIForm?, con el código que pusiste deberia estar bien,  a menos que el control Image no este dentro del Picture   :huh:

imagino que lo que quieres es hacer más o menos esto


este es un MDIForm y la imagen la tengo en un picturebox y la redimensiono con el código que te pase, que si lo analizas es lo mismo que tu tienes
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.