Página 1 de 1

Timage autoajustable

Publicado: Lun Nov 28, 2005 1:48 pm
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 .

Timage autoajustable

Publicado: Lun Nov 28, 2005 2:03 pm
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

Timage autoajustable

Publicado: Lun Nov 28, 2005 2:23 pm
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

Timage autoajustable

Publicado: Lun Nov 28, 2005 2:27 pm
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

Timage autoajustable

Publicado: Lun Nov 28, 2005 4:10 pm
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
>