Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-04-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
Zoom en la imagen

Hola, estoy haciendo 2 funciones para cambiar el zoom de la imagen, y me pasa que el zoom - siempre me aumenta, al igual que el zoom +, éstos son los códigos que tengo:

En el zoom +

Imagen->Height= Imagen->Picture->Height;
Imagen->Width=Imagen->Picture->Width;
Imagen->Height = Imagen->Height*2;
Imagen->Width = Imagen->Width*2;

En el zoom -

Imagen->Height= Imagen->Picture->Height;
Imagen->Width=Imagen->Picture->Width;
Imagen->Height = Imagen->Height/2;
Imagen->Width = Imagen->Width/2;

Además de lo q siempre me aumenta, quisiera que cada vez que se pulse el botón aumentara su tamaño, al igual que para dismunuir, que solo me lo hace la primera vez...

Y ya una última preguntita, la propiedad de monocrhoma del bitmap, es para que te ponga la imagen en escalas de grises?? pq a mi me la pone toda en negra...

Gracias.
Saludos.
Responder Con Cita
  #2  
Antiguo 28-04-2008
Northern Northern is offline
Miembro
 
Registrado: ene 2006
Posts: 211
Poder: 19
Northern Va por buen camino
Monocromo se aplica a dos colores negro-blanco, negro-verde, etc.

Para hacer zoom sobre una imagen yo buscaría en google por "stretch image delphi" o algo así. Hay muchos ejemplos y esas funciones tienen la ventaja de que mantienen la proporcionalidad (aspect ratio) de la imagen.



Saludos
Responder Con Cita
  #3  
Antiguo 28-04-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Le doy la razón a Northern, para amodificar el tamaño de la IMAGEN y no así del "componente" te aconsejo revisar la API o método Canvas.CopyRect; un ejemplo de escala de grises y otro ejemplo de acceso a gráficos.


Saludos
Responder Con Cita
  #4  
Antiguo 29-04-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
Si, pero lo que me parece más raro haciendo el zoom menos, es que teniendo esto:

Imagen->Height=Imagen->Height/2;
Imagen->With=Imagen->With/2;

Siempre aumenta el tamaño del ancho y el alto de la imagen, y no se por qué... lo he depurado y veo que aumentan los valores, en vez de ser reducidos... cosa rarísimaa porque mira que le pongo que se divida entre 2. Y he mirado más ejemplos en Internet, pero más o menos son así y no me funcionan , y otra cosa que me pasa es que solo me aumenta una vez, la primera, no cada vez que le doy al botón... ¿será por alguna propiedad de la imagen? Aunque creo q las tengo bien puestas, tengo el Strech y proporcional a True, y el autosize también a True...
Es que por más vueltas que le doy... no se por qué me aumenta si le estoy diviendo su tamaño.

Gracias y saludos.
Responder Con Cita
  #5  
Antiguo 29-04-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por fasthorse Ver Mensaje
...tengo el Strech y proporcional a True, y el autosize también a True...
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Imagen->Picture->LoadFromFile("c:\\windows\\\Zapotec.bmp");
 Imagen->Height = Imagen->Picture->Height;
 Imagen->Width /= 2;
 Imagen->Width /= 2;
}
Stretch = True
AutoSize = False
Proportional = False


Saludos
Responder Con Cita
  #6  
Antiguo 29-04-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
Nada, con ese mismo código y esas mismas propiedades sigue aumentandome con el zoom menos, y solo me deja hacer una vez la operación, vamos q sigo igual...

Saludos.
Responder Con Cita
  #7  
Antiguo 07-08-2008
Avatar de JoysticK
JoysticK JoysticK is offline
Miembro
 
Registrado: abr 2004
Posts: 68
Poder: 21
JoysticK Va por buen camino
A ver te pongo el codigo que yo utilizo y me funciona perfectamente:
Creo dos variables al cargar la imgen, tipo Integer, almacenando el Ancho y el Alto de la imagen original...

Un componente TImagen, con las propiedades
Código:
Autosize := False;
Strethc := True;
Proportional := True;
en el FormShow: (Con la imagen ya cargada en el picture)

Código:
Imagen.AutoSize := True;
Alto := Imagen.Width;
Ancho := Imagen.Height;
Despues le he puesto un slider (Zoom) y un Label (xzoom) y en el onchange del slider este codigo:

Código:
    Imagen.AutoSize := False;
    Imagen.Height := Round(Ancho * (Zoom.Value/100) );
    Imagen.Width := Round(Alto * (Zoom.Value / 100) );
    xzoom.Caption := '>> ZOOM ' + IntToStr(Zoom.Value) + ' % <<';

Pruebalo y me cuentas, a mi me funciona...
__________________
Borland Delphi XE2 // Interbase Server

Última edición por JoysticK fecha: 07-08-2008 a las 14:34:20.
Responder Con Cita
Respuesta



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
Zoom de pantalla Nbull Varios 10 15-01-2023 19:55:59
Imagen a blanco y negro y zoom fasthorse Gráficos 1 24-04-2008 05:23:41
Problemas con zoom mrnovice Gráficos 2 15-04-2008 00:16:17
zoom a imagen kapullok_2006 Gráficos 4 04-04-2007 06:17:31
Zoom de Imágenes Mariana Varios 2 14-09-2003 06:33:19


La franja horaria es GMT +2. Ahora son las 11:12:11.


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