Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-05-2012
Beaker_ Beaker_ is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 13
Poder: 0
Beaker_ Va por buen camino
Ajustar (Stretch) & Centrar Imagen En TImage Dentro de ScrollBox

Buena tarde. Quisiera saber si alguién me pudiera ayudar en un par de problemas que tengo.
Esta es mi situación:
Tengo que hacer un programa el cual cargue una imagen en un TImage (lo cual ya hago) y aplicarle zoom de acuerdo a la entrada del usuario.
La imagen inicialmente la ajusto al TImage (propiedad Stretch) para que se vea bien y completa.
Este TImage está dentro de un ScrollBox para cuando se tenga que hacer zoom.
Cuando el usuario quiere hacer zoom, le cambio las propiedades al TImage, para que se pueda ver la imagen con base a la escala de Zoom, y como está dentro de un ScrollBox, tiene las barras para recorrer la imagen

Código Delphi [-]
imagen.Stretch := False;
imagen.AutoSize := True;

Mi primer problema es, cómo mantener centrada la imagen dentro del ScrollBox?
La otra situación es que el usuario puede "restaurar" la vista para que se vea de la manera inicial, es decir, Stretch/Ajustada, por lo cual cambio de nuevo los valores como muestro abajo.
Sin embargo, la imagen se sigue viendo grande (ya que es más grande que el TImage), con las barras de ScrollBox y sin aplicar Stretch. Será que después de desactivar el Stretch y activar el Autosize, ya no se puede restaurar?

Código Delphi [-]
imagen.AutoSize := False;
imagen.Stretch := True;
Responder Con Cita
  #2  
Antiguo 22-05-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola,

para centrar la imagen tendrás que jugar con el top y el left de la imagen y con el heigth y width del scrollbox para ir centrando la imagen según vaya aumentando y disminuyendo.
El stretch lo que hace es ajustar la imagen que cargas al tamaño del objeto TImage, no al revés, tienes la opción proportional para conseguir que la imagen no pierda sus proporciones originales y no esté deformada pero tampoco te va a cargar la imagen a su tamaño original, cuando cargas la imagen al principio, puedes cargar sus valores de width y height en unas variables y cuando pulsen restaurar cargar el valor de esas variables.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #3  
Antiguo 22-05-2012
Beaker_ Beaker_ is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 13
Poder: 0
Beaker_ Va por buen camino
Muchas gracias por tu respuesta, la cuestión es que si podía yo restaurar el stretch después de ampliar la imagen usando el scroll, el problema era que no me mostraba el scroll horizontal. Una vez que hice más grande el scroll para así poder ver la barra horizontal, lo cual si funcionó, dejé de poder restaurar la imagen, por lo cual si se ha de poder, pero no sé si tengo que cambiar las propiedades del scroll o que sucede... Gracias
Responder Con Cita
  #4  
Antiguo 22-05-2012
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Beaker_ Ver Mensaje
Muchas gracias por tu respuesta, la cuestión es que si podía yo restaurar el stretch después de ampliar la imagen usando el scroll
Hola Beaker_, si utilizas solo la propiedad Strech si se puede sobre el mismo tamaño del TImage, pero si queres ampliar tendrías que asignar tu, su nuevo Width y Heigth y al restaurar lo mismo, si utilizas el AutoSize no se puede restaurar al tamaño original, tienes que guardar en alguna variable su Width y Height inicial como te indica ElDioni, y estaríamos en lo mismo si utilizaramos solo Strech.

Para que parezca centrado puedes utilizar la propiedad Margin de tu ScrollBox.

Código Delphi [-]
 aWidth := imagen.Width;
 aHeigth := imagen.Height;
 ScrollBox1.VertScrollBar.Margin := imagen.Top;
 ScrollBox1.HorzScrollBar.Margin := imagen.Left;
 imagen.Stretch := False;
 imagen.AutoSize := True;

 //Parar restaurar
 imagen.AutoSize := False;
 imagen.Stretch := True;
 imagen.Width := aWidth;
 imagen.Height := aHeigth;
 ScrollBox1.VertScrollBar.Margin := 0;
 ScrollBox1.HorzScrollBar.Margin := 0;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
centrar timage en una form JXJ Varios 4 06-10-2017 00:51:30
ajustar el componente Timage a la imagen kurono Varios 3 28-06-2010 17:17:52
Como centrar una imagen en un timage con un click The_Duke Gráficos 3 24-11-2008 03:07:03
Borrar lo que esta dentro de un scrollbox sierraja OOP 21 07-10-2005 16:56:40
crear text dentro de una ScrollBox Chelo Varios 1 29-07-2004 04:48:50


La franja horaria es GMT +2. Ahora son las 18:52:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi