Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Resizar MDIform.picture (VB6)

Estas en el tema de Resizar MDIform.picture (VB6) en el foro de Visual Basic clásico en Foros del Web. Buenas, Tengo un proyecto en VB6 en el que tengo que poner una imagen al fondo de un menu. El problema es que la imagen ...
  #1 (permalink)  
Antiguo 26/05/2008, 05:25
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Resizar MDIform.picture (VB6)

Buenas,

Tengo un proyecto en VB6 en el que tengo que poner una imagen al fondo de un menu. El problema es que la imagen es mucho mayor que el formulario y por lo tanto al meterlo en la propiedad picture del MDIform solo me aparece la parte superior izquierda de la imagen. Me han pedido que se resizee para que se vea completa, pero no encuentro la manera por ningun sitio. Espero puedan orientarme o darme una solucion a este problema.

Muchas gracias.
  #2 (permalink)  
Antiguo 26/05/2008, 07:10
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Resizar MDIform.picture (VB6)

Hola,
inténtalo así:

Código:
Private Sub MDIForm_Resize()
With Image1
    .Stretch = True
    .Left = 0
    .Top = 0
    .Width = Me.Width
    .Height = Me.Height
End With
End Sub


Editado:
Error por mi parte, en un MDI no puedes insertar un control Image, el código anterior es para un form normal (hijo). (Lo siento)

Última edición por Avellaneda; 26/05/2008 a las 07:20
  #3 (permalink)  
Antiguo 26/05/2008, 07:18
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

El problema es que no se pueden meter objetos image en un MDIForm, por eso estoi usando la PROPIEDAD picture del MDIForm.

Espero ayuda, que llevo horas buscando y no encuentro na de na.

Gracias.
  #4 (permalink)  
Antiguo 26/05/2008, 07:39
 
Fecha de Ingreso: agosto-2007
Mensajes: 17
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

Que problema tienes?
En propiedades, Picture y te tiene que insertar la imagen que quieres.
  #5 (permalink)  
Antiguo 26/05/2008, 07:42
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

Pues que la imagen es bastante mas grande que el formulario y debo conseguir que quede del tamaño del formulario, en vez de que se vea solo una parte. ¿Porque no hago la imagen mas pequeña? Pues porque me lo han pedido asi, que cuando se ponga en modo ventana se rehaga al tamaño de la ventana.

Ya se que existe la propiedad picture e insertas la imagen, sino no estaria preguntando como conseguir que quede del tamaño del formulario.
  #6 (permalink)  
Antiguo 26/05/2008, 07:45
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

Cita:
Iniciado por Avellaneda Ver Mensaje
Hola,
inténtalo así:

Código:
Private Sub MDIForm_Resize()
With Image1
    .Stretch = True
    .Left = 0
    .Top = 0
    .Width = Me.Width
    .Height = Me.Height
End With
End Sub


Editado:
Error por mi parte, en un MDI no puedes insertar un control Image, el código anterior es para un form normal (hijo). (Lo siento)
No pasa nada majo, todo el mundo se equivoca en este mundo. Gracias de todas formas.
  #7 (permalink)  
Antiguo 26/05/2008, 11:36
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Resizar MDIform.picture (VB6)

Mira, lo que puedes hacer es colocar el Picture en el MDI con la propiedad Picture sin nada (Ninguno) y dentro del Picture un control Image y en la propiedad Picture le pones tu imagen, y con este código:

Código:
Private Sub MDIForm_Resize()
Picture1.Height = Me.Height
With Image1
    .Stretch = True
    .Left = 0
    .Top = 0
    .Width = Me.Width
    .Height = Me.Height
End With
End Sub
  #8 (permalink)  
Antiguo 27/05/2008, 01:21
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

Cita:
Iniciado por Avellaneda Ver Mensaje
Mira, lo que puedes hacer es colocar el Picture en el MDI con la propiedad Picture sin nada (Ninguno) y dentro del Picture un control Image y en la propiedad Picture le pones tu imagen, y con este código:

Código:
Private Sub MDIForm_Resize()
Picture1.Height = Me.Height
With Image1
    .Stretch = True
    .Left = 0
    .Top = 0
    .Width = Me.Width
    .Height = Me.Height
End With
End Sub


Funciona a la perfeccion amigo, pero me surge un pequeño problema y es que el control picture donde he metido el contro image no deja que se vean los formularios cuando se cargan, quedan como por detras de la imagen.
  #9 (permalink)  
Antiguo 27/05/2008, 01:38
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

Parece que es una cruzara sin solucion, segun leo el control picturebox coge todo el espacio y es por ello que los formularios Child del MDIform no se ven.... una pena, porque era una muy buena idea.

Seguires buscando alguna solucion, si encuentro la posteare aqui.

Muchas gracias de todas formas.
  #10 (permalink)  
Antiguo 27/05/2008, 07:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Resizar MDIform.picture (VB6)

Puedes hacerlo así:
Código:
 
' By MaxExtreme (Tamaño de Imagen)
Private Const IMAGESIZE = 0.566893424036281
 
Private Sub MDIForm_Resize()
On Error Resume Next
Dim ImageWidth As Single
Dim ImageHeight As Single
picStretch.Visible = False
picStretch.AutoRedraw = True
ImageWidth = picStretch.Picture.Width * IMAGESIZE
ImageHeight = picStretch.Picture.Height * IMAGESIZE
picStretch.PaintPicture picStretch.Picture, 0, 0, Me.Width, Me.Height, 0, 0, ImageWidth, ImageHeight
Set Me.Picture = picStretch.Image
End Sub
Saludos

P.S.: Debes tener un PictureBox llamado picStretch, en ella debes colocar la imagen que quieres colocar como fondo de la Ventana...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 28/05/2008, 01:32
 
Fecha de Ingreso: abril-2007
Mensajes: 82
Antigüedad: 17 años
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

Genial amigo David el Frande, solo he tenido que añadir una linea mas para que fuera perfecto, ya que la imagen se resizaba pero el picturebox no, pongo el codigo por si alguien puede ponerlo en el FAQ ya que es de mucha ayuda:

Código:
' By MaxExtreme (Tamaño de Imagen) -- (modificado por Mirador)
Private Const IMAGESIZE = 0.566893424036281
 
Private Sub MDIForm_Resize()
On Error Resume Next
Dim ImageWidth As Single
Dim ImageHeight As Single
picStretch.Visible = False
picStretch.AutoRedraw = True
picStretch.Height = Me.Height
ImageWidth = picStretch.Picture.Width * IMAGESIZE
ImageHeight = picStretch.Picture.Height * IMAGESIZE
picStretch.PaintPicture picStretch.Picture, 0, 0, Me.Width, Me.Height, 0, 0, ImageWidth, ImageHeight
Set Me.Picture = picStretch.Image
End Sub
Gracias a todos por vuestra ayuda
  #12 (permalink)  
Antiguo 28/05/2008, 14:48
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Resizar MDIform.picture (VB6)

Sí, se me olvidó copiar esa parte del código cuando lo pasé (a mano) desde mi computadora.

De nada . Saludos

P.S.: Otra cosa, para que funcione en el caso de que se tenga PictureBox o ToolBar en el MDIForm debe cambiar Me.Width y Me.Height por Me.ScaleWidth y Me.ScaleHeight. Así:
Código:
Private Const IMAGESIZE = 0.566893424036281 ' By MaxExtreme (Tamaño de Imagen)
Private Sub MDIForm_Resize()
On Error Resume Next
Dim ImageWidth As Single
Dim ImageHeight As Single
picStretch.Visible = False
picStretch.AutoRedraw = True
picStretch.Height = Me.ScaleHeight 'By Mirador
ImageWidth = picStretch.Picture.Width * IMAGESIZE
ImageHeight = picStretch.Picture.Height * IMAGESIZE
picStretch.PaintPicture picStretch.Picture, 0, 0, Me.ScaleWidth, Me.ScaleHeight, 0, 0, ImageWidth, ImageHeight
Set Me.Picture = picStretch.Image
End Sub
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 02/07/2008, 15:50
 
Fecha de Ingreso: mayo-2005
Mensajes: 16
Antigüedad: 19 años
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

Ohh, la raja, estuve algunos días buscando esta información, para diseñar facturas, y este tema me sirvió de mucho, ahora puedo hacer drag & frop sin problemas sobre el picture, con la imagen de la factura ajustada.... Ahora sólo me falta calcular las posiciones en que se imprimirán los campos :S.... pero esos son "cálculos" que debo hacer de algunoa forma xD

Gracias...
  #14 (permalink)  
Antiguo 02/07/2008, 15:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Resizar MDIform.picture (VB6)

Cita:
Iniciado por Sakuragi Ver Mensaje
Ohh, la raja, estuve algunos días buscando esta información, para diseñar facturas, y este tema me sirvió de mucho, ahora puedo hacer drag & frop sin problemas sobre el picture, con la imagen de la factura ajustada.... Ahora sólo me falta calcular las posiciones en que se imprimirán los campos :S.... pero esos son "cálculos" que debo hacer de algunoa forma xD

Gracias...
Nos alegramos que haya sido de utilidad. Cualquier duda, estamos por aquí...

Nos vemos
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #15 (permalink)  
Antiguo 06/01/2009, 23:00
 
Fecha de Ingreso: enero-2009
Mensajes: 1
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

Hola o todos un poco tarde pero seguro, aqui dejo como redimensionar una imagen y no deformarla, se puede ir redimensionando el MDI form y la imagen se agranda o achica pero sin deformarse rellenando en blanco los espacios del form que no corresponden en Width o Height de la imagen.
Se necesita dos PictureBox
ponerolos el MDI Form
1ro. picStretch (nombre PictureBox 1)
2do. picNothing (nombre PictureBox 2)
3ro. cargar picStretch con una imagen
4to. Abrir el pain y con el balde pintar de un color (color que quedará de fondo en el programa) y guardar la imagen (*.jpg).
5to. cargar picNoting con esa imagen del paint.
y por último el código....
Cita:
Private Sub MDIForm_Load()
'Call redimensionarImagenMDIForm
'MDIForm1.picStretch = LoadPicture("D:\Cristian\fotos\0001.jpg")
End Sub

Private Sub MDIForm_Resize()
Call redimensionarImagenMDIForm
End Sub

'Por las dudas coloquen esta funcion en un módulo

Public Function redimensionarImagenMDIForm()

Dim ImageWidth As Single
Dim ImageHeight As Single
Dim Red As Double

On Error Resume Next

MDIForm1.picStretch.Visible = False
MDIForm1.picStretch.AutoRedraw = True
MDIForm1.picStretch.Height = MDIForm1.Height
If (MDIForm1.picStretch.Picture.Height > MDIForm1.Height) Then
Red = (MDIForm1.Height) / MDIForm1.picStretch.Picture.Height
ImageHeight = MDIForm1.picStretch.Picture.Height * Red
ImageWidth = MDIForm1.picStretch.Picture.Width * Red
End If
If (ImageWidth > MDIForm1.Width) Then
Red = (MDIForm1.Width) / MDIForm1.picStretch.Picture.Width
ImageHeight = MDIForm1.picStretch.Picture.Height * Red
ImageWidth = MDIForm1.picStretch.Picture.Width * Red
End If

MDIForm1.picStretch.PaintPicture MDIForm1.picNothing.Picture, 0, 0, MDIForm1.Width, MDIForm1.Height, 0, 0
MDIForm1.picStretch.PaintPicture MDIForm1.picStretch.Picture, 0, 0, ImageWidth, ImageHeight, 0, 0
Set MDIForm1.Picture = MDIForm1.picStretch.Image

Resume: Exit Function
End Function
Espero que les sirva.
Saludos
  #16 (permalink)  
Antiguo 31/10/2009, 15:29
 
Fecha de Ingreso: octubre-2009
Mensajes: 1
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

hola estaba esperando por este codigo esta legal..
pero otra pregunta seria si quiero cambiar la imagen del PicStrech mediante un commondialog como le hago...
Ante todo gracias...
  #17 (permalink)  
Antiguo 17/11/2009, 09:29
 
Fecha de Ingreso: abril-2005
Ubicación: Piura - Perú
Mensajes: 189
Antigüedad: 19 años
Puntos: 0
Respuesta: Resizar MDIform.picture (VB6)

agregas en tu menu ó en un boton lo siguiente :
Previo agregas los Microsoft CommonDialog (control + t)
Código:
Private Sub cambiafondo_Click()
CommonDialog1.DialogTitle = "Seleccione una imagen"
CommonDialog1.Filter = "Archivos Jpg|*.jpg|Archivos Bmp|*.bmp|Archivos Gif|*.gif|Archivos de íconos|*.ico|Todos los Archivos|*.*"
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
    picStretch.Picture = LoadPicture(CommonDialog1.FileName)
    Call redimensionarImagenMDIForm
End If
End Sub
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 4 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 02:44.