Hola invitado         02 Sep, 2010 - 04:46
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Estirar y mantener una imagen en la pantalla principal (_Screen) lecturas 4835
 Enviado por LuisMaria en Martes, 08 Julio, 2008
Formularios Como cubrir toda la pantalla principal de Visual FoxPro con una imagen "estirada" y que se ajuste automáticamente cuando cambiamos el tamaño de la ventana.

Como vimos en artículos anteriores publicados en PortalFox, la manera de poner una imagen de fondo en la pantalla principal de Visual FoxPro es agregar un objeto Image al objeto _Screen.

Esta imagen la podemos iniciar centrada con:

-- Centrar una imagen en la pantalla principal (_Screen) --
http://www.portalfox.com/article.php?sid=349

Y mantenerla centrada, aun cuando cambiamos el tamaño de la ventana principal con:

-- Mantener centrada una imagen en la pantalla principal (_Screen) --
http://www.portalfox.com/article.php?sid=2044

Ahora lo que deseamos es que la imagen de fondo, cubra toda la pantalla principal, y se ajuste automáticamente el tamaño cuando redimensionamos la ventana.

Para hacer esto tenemos al menos dos formas distintas obteniendo el mismo resultado buscado.

1. A partir de VFP 8.0, podemos utilizar la función BINDEVENT() para enlazar el método Resize del objeto _Screen, con un método personalizado en nuestro objeto Image.

_SCREEN.ADDOBJECT("oImagen","MiImagen")
WITH _Screen.oImagen
  lcPicture = GETPICT()
  .PICTURE = lcPicture
   .STRETCH = 2 && 1=Mantiene las proporciones, 2=Cubre todo
  *-- Solo si la imagen tiene transparencia
  * .BACKSTYLE = 0 && 0=Transparente, 1=Opaca
  .LEFT = 0
  .TOP = 0
  .WIDTH = _SCREEN.WIDTH
  .HEIGHT = _SCREEN.HEIGHT
  BINDEVENT(_SCREEN,"Resize",_SCREEN.oImagen,"MiResize")
  .VISIBLE = .T.
ENDWITH

DEFINE CLASS MiImagen AS IMAGE
  PROCEDURE MiResize
    WITH THIS
      .LEFT = 0
      .TOP = 0
      .WIDTH = _SCREEN.WIDTH
      .HEIGHT = _SCREEN.HEIGHT
    ENDWITH
  ENDPROC
  PROCEDURE DESTROY
    UNBINDEVENT(THIS)
  ENDPROC
ENDDEFINE

2. A partir de VFP 9.0 podemos utilizar solo la propiedad Anchor del objeto Image, sin utilizar la función BINDEVENT(), y sin la necesidad de tener una clase personalizada Image con un método que maneje su redimensionamiento.

_SCREEN.ADDOBJECT("oImagen","Image")
WITH _Screen.oImagen
  lcPicture = GETPICT()
  .PICTURE = lcPicture
   .STRETCH = 2 && 1=Mantiene las proporciones, 2=Cubre todo
  *-- Solo si la imagen tiene transparencia
  * .BACKSTYLE = 0 && 0=Transparente, 1=Opaca
  .LEFT = 0
  .TOP = 0
  .WIDTH = _SCREEN.WIDTH
  .HEIGHT = _SCREEN.HEIGHT
  .ANCHOR = 15
  .VISIBLE = .T.
ENDWITH

Hay tres cosas (solo dos si no se utiliza la propiedad Anchor) que debemos tener en cuenta para un mejor resultado visual:

  1. Según el tipo y proporciones de ancho/alto de la imagen original, hay que ver si es mejor mantener las poporciones de la imagen; o llenar toda la pantalla con la imagen sin mantener sus proporciones. Para ello debemos configurar la propiedad Stretch con el valor 1 si queremos mantener las proporciones de la imagen, o el valor 2 si queremos llenar toda la pantalla con la imagen.
  2. Si la imagen no posee transparencias, la propiedad BackStyle debe tener el valor 1, que es su valor por omisión. Solo si la imagen posee transparencias se debe configurar la propiedad BackStyle con el valor 0. De otra manera se obtienen resultados no deseados cuando se redimensiona la imagen
  3. En el caso de utilizar la propiedad Anchor, esta debe configurarse al final, luego de que se configuren las propiedades Left, Top, Height y Width de la imagen.

Hasta la próxima.

 

 Versión imprimible  
Estirar y mantener una imagen en la pantalla principal (_Screen) | Entrar/Crear una cuenta | 1 Comentario
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.

Re: Estirar y mantener una imagen en la pantalla principal (_Screen)


por ergc en 10 Ago, 2008 - 02:53
(Información del usuario  | Enviar un mensaje http://)
El problema real consiste cuando se instala el programa en una computadora que tiene diferente configuracion de pantalla (otra resolucion) si mi codigo cubre una pantalla con resolucion de 1280 x 1024 y lo instalo en otra con resolucion 1024 x 768 me va a generar un error ¿hay forma de evitar esto?
...Para mi este es el peor defecto de visual fox




Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.