In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Timage autoajustable

Foro público de Xailer en español
Responder
correo
Mensajes: 109
Registrado: Mar Nov 22, 2005 7:15 pm

Timage autoajustable

Mensaje por correo »

El problema se resume en incluir una imagen de cualquier tamaño en un
control Timage ,no en que el usuario haga zoom para encajarlo .
En fw seria un metodo tipo oBmp:Adjust()
Es la unica forma de incorporar un visor de autoejecución (va pasando de una
foto a otra) o un visor que el usuario no tenga que intervenir para
"ajustar" la imagen ,sino solo para ir a la siguiente o a la anterior .
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Timage autoajustable

Mensaje por jfgimenez »

Juan José,
> El problema se resume en incluir una imagen de cualquier tamaño en un
> control Timage ,no en que el usuario haga zoom para encajarlo .
> En fw seria un metodo tipo oBmp:Adjust()
>
> Es la unica forma de incorporar un visor de autoejecución (va pasando de
> una foto a otra) o un visor que el usuario no tenga que intervenir para
> "ajustar" la imagen ,sino solo para ir a la siguiente o a la anterior .
Actualmente no hay ningún método para ajustar la imagen al control. No
obstante puedes hacer lo siguiente (lo he escrito al vuelo y no lo he
probado):
WITH OBJECT ::oImage1
:oPicture := TPicture():LoadFromFile( "TuImagen.jpg" )
IF :oPicture:nWidth >= :oPicture:nHeight // imagen horizontal
:nZoom := :nWidth *100 / :oPicture:nWidth
ELSE // imagen vertical
:nZoom := :nHeight * 100 / :oPicture:nHeight
ENDIF
END
Si el control image no es cuadrado sólo tienes que variar ligeramente los
cálculos.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Francisco Sanchez
Mensajes: 532
Registrado: Mié Feb 09, 2005 6:20 pm

Timage autoajustable

Mensaje por Francisco Sanchez »

Tambien podrias utilizar un tBevel que para el efecto te va a ser lo mismo.
El tBevel si tiene para que la imagen se autoajuste. Usa nBkgndmode :=
bblSTRETCH y la imagen se autoajustara al tamaño del tbevel.Con obkgnd
indicas la imagen a mostrar.
Un saludo
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Timage autoajustable

Mensaje por jfgimenez »

Paco,
> Tambien podrias utilizar un tBevel que para el efecto te va a ser lo
> mismo. El tBevel si tiene para que la imagen se autoajuste. Usa nBkgndmode
> := bblSTRETCH y la imagen se autoajustara al tamaño del tbevel.Con obkgnd
> indicas la imagen a mostrar.
Sí, pero no. Si usas un TBevel de esa forma, te distorsiona la imagen. En
cambio, TImage siempre respeta las proporciones.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
correo
Mensajes: 109
Registrado: Mar Nov 22, 2005 7:15 pm

Timage autoajustable

Mensaje por correo »

Ya lo he conseguido , lo que hago para que no se me vean los margenes es
aplicar un Zoom unico en ancho y alto y despues ajustar el TImage al tamaño
del oPicture .Este es el codigo
// Tengo creado el objeto TImage (oImage1)
// Creo el objeto TPicture
WITH OBJECT ::oImagen:=TPicture():New()
:cName := ::aImagen[::nImagen] // O el nombre del fichero a
visualizar
:Create()
END
// Se lo asigno al obeto TImage
::oImage1:SetPicture(::oImagen)
// Los valores originales del objeto TIMage que he guardado en
::oImage1:ONCreate()
::oImage1:nWidth := ::nWidthImg
::oImage1:nHeight:= ::nHeightImg
// Calculo un Zoom del TImage para poder encajar la foto
if ::oImage1:nWidth > ::oImagen:nWidth // imagen horizontal
::oImage1:nZoom := ::oImage1:nWidth *100 / ::oImagen:nWidth
else
::oImage1:nZoom := ::oImage1:nHeight * 100 / ::oImagen:nHeight
endif
// Reduzco el Objeto TImage para que no me queden margenes sin rellenar
(queda muy feo)
if ::oImage1:nWidth > ::oImage1:nZoom * ::oImagen:nWidth /100
::oImage1:nWidth := ::oImage1:nZoom * ::oImagen:nWidth /100
endif
if ::oImage1:nHeight > ::oImage1:nZoom * ::oImagen:nHeight /100
::oImage1:nHeight := ::oImage1:nZoom * ::oImagen:nHeight /100
endif
::oImage1:vAdjust(.t.) //Me hace el ajuste vertical (heredado de
TScrollingWinControl)
::oImage1:hAdjust(.t.) //Me hace el ajuste horizontal
Un saludo.Juanjo
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:438b05dd$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Paco,
>
>> Tambien podrias utilizar un tBevel que para el efecto te va a ser lo
>> mismo. El tBevel si tiene para que la imagen se autoajuste. Usa
>> nBkgndmode := bblSTRETCH y la imagen se autoajustara al tamaño del
>> tbevel.Con obkgnd indicas la imagen a mostrar.
>
> Sí, pero no. Si usas un TBevel de esa forma, te distorsiona la imagen. En
> cambio, TImage siempre respeta las proporciones.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
Responder