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 19-10-2006
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Zoom tipo lupa

Saludos,

Este hilo no es para realizar una consulta, sino para aportar algo, aunque no es mio.
Buscando soluciones a algunos de mis problemas de programación de zooms, he encontrado una página donde describe como crear un zoom de tipo lupa.

http://delphi.about.com/od/graphics/l/aa120198.htm

Creo que puede serle de utilidad a alguien, por eso lo he puesto acá. Espero no haberme saltado ninguna de las reglas del foro.

Ciao!
Responder Con Cita
  #2  
Antiguo 19-10-2006
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Pues hombre muchísimas gracias por tu aportación!

Ahora lo que sería la repera es que cogieras ese link lo pasases a un ejemplo en Delphi y lo pusieras en la sección de trucos. Tú o cualquiera que se anime a hacerlo (sino lo hago yo ), no hay problema, no quiero ofender.

Te apuntas un gran tanto con ello.

Nuevamente muchas gracias.

Un saludos
Responder Con Cita
  #3  
Antiguo 19-10-2006
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Codigo fuente

El tanto ya se lo ha apuntado el propio autor de la explicación.
Al final de la explicación de cómo hacerlo, hay un par de enlaces. Uno de ellos para bajarse el código fuente, y el otro para bajar un ejecutable.
La verdad es que lo he probado y el ejemplo es la repera.
Yo lo voy a usar seguro!

No he abierto el código, pero supongo que si trae comentarios están en inglés. Pero creo que no abrá muchas dudas. Si es así solo teneis que decirlo y las traduzco.

ciao!
Responder Con Cita
  #4  
Antiguo 19-10-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
No veo mucha diferencia con este otro código que publique aquí, y que explica como hacerlo usando hasta 3 métodos diferentes.
[Fin de la auto promoción]
Responder Con Cita
  #5  
Antiguo 19-10-2006
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Opps!

Perdona Sease,

me debí de saltar ese ejemplo. Ahora le hecho un vistazo.
La verdad es que para qué buscar fuera del foro lo que se puede encontrar dentro, verdad?

Gracias!
Responder Con Cita
  #6  
Antiguo 02-11-2006
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Más dudas

Saludos de nuevo,

Pues tras pegarme un buen rato con esto, no consigo aplicarlo a mi aplicación. En realidad, no me interesa que se haga un zoom sobre todo el screen , sino sólo sobre la imagen contenda en un Timagen dentro del form principal.

Alguna idea?

Muchas gracias!!
Responder Con Cita
  #7  
Antiguo 02-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
No es tan complicado, basta con utilizar el canvas de la imagen en vez de DC de la pantalla. He modificado un poco el ejemplo anterior, aunque quizá en vez de usar StretchBlt quizá seria mejor usar CopyRect, pero se utilizaría de una forma similar.
Archivos Adjuntos
Tipo de Archivo: zip Ejemplo34.zip (5,9 KB, 136 visitas)
Responder Con Cita
  #8  
Antiguo 02-11-2006
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Gracias

Gracias seoane,

me descargo el ejemplo y me dedico a probar. Ya te cuento si me fue bien. Muchas gracias!
Responder Con Cita
  #9  
Antiguo 02-11-2006
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
¿Solo BMP?

He probado el ejemplo, y le he modificado un par de cosillas para ver si me servía, y me he encontrado con que sólo sirve para imágenes BMP.

He quitado el código de onformcreate, y he incluido una imagen jpeg en el cuadro de la izquierda. El problema es que no se ejecuta bien debido a que no es un bmp. Seguiré con ello aq ver que puedo hacer.

Gracias!!
Responder Con Cita
  #10  
Antiguo 02-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Efectivamente, solo se pueden manipular imágenes bmp dentro de un TImage. Tenemos 2 opciones, convertir la imagen de jpg a bmp en el momento de cargarla en el TImage, operación sencilla y que no supone ningún problema, o volver a usar el DC de la pantalla como al principio pero ahora dentro del evento OnMouseMove y no dentro de un Timer. Yo casi prefiero la primera opción, pero eso depende de como realices la carga de la imagen, si en tiempo de diseño o durante el funcionamiento del programa, en ambos casos la forma de hacerlo es diferente pero igual de sencilla.
Responder Con Cita
  #11  
Antiguo 02-11-2006
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Cargar imagen en ejecución

Gracias Seoane,

Lo que pretendo es que el usuario final introduzca una imagen para trabajar con ella, y que la cambie cuantas veces considere. Por ello, habría que cargar la imagen en tiempo de ejecuación.

Otra cosilla. No se si es problema mío, o que el ejemplo lo hiciste así, pero el zoom sobre el rayado de ejemplo sólo podía verse en el área de zoom cuando hacía click con el ratón y luego lo movía sobre la imagen. ¿no es posible ver el zoom sin necesidad de "clickear", sino simplemente moviendo el ratón por encima de la image?

Gracias!!
Responder Con Cita
  #12  
Antiguo 02-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por oregon
Otra cosilla. No se si es problema mío, o que el ejemplo lo hiciste así, pero el zoom sobre el rayado de ejemplo sólo podía verse en el área de zoom cuando hacía click con el ratón y luego lo movía sobre la imagen. ¿no es posible ver el zoom sin necesidad de "clickear", sino simplemente moviendo el ratón por encima de la image?
El titulo del formulario es "Ejemplo de Zoom - Mueve el raton sobre la imagen con el boton pulsado", asi que puede que lo hiciera de forma intencionada .

Para cambiar eso, en el evento OnMouseMove:
Código Delphi [-]
procedure TfrmMain.imgMainMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Seleccion: TRect;
  Bitmap: TBitmap;
begin
  if ssLeft in Shift then // <-- Eliminar esta linea
  begin
    Seleccion.Left:= X - 20;
    Seleccion.Right:= X + 20;
    Seleccion.Top:= Y - 20;
    Seleccion.Bottom:= Y + 20;

    if btnCopiar.Checked then
    begin
      Copiar(imgMain.Canvas.Handle,pbZoom.Canvas.Handle,Seleccion,tbZoom.Position);
    end;

    if btnBorrar.Checked then
    begin
      pbZoom.Canvas.FillRect(pbZoom.Canvas.ClipRect);
      Copiar(imgMain.Canvas.Handle,pbZoom.Canvas.Handle,Seleccion,tbZoom.Position);
    end;

    if btnBuffer.Checked then
    begin
      Bitmap:= TBitmap.Create;
      try
        Bitmap.Canvas.Brush.Color:= pbZoom.Canvas.Brush.Color;
        Bitmap.Width:= pbZoom.Width;
        Bitmap.Height:= pbZoom.Height;
        Bitmap.Canvas.FillRect(pbZoom.Canvas.ClipRect);
        Copiar(Canvas.Handle,Bitmap.Canvas.Handle,Seleccion,tbZoom.Position);
        pbZoom.Canvas.Draw(0,0,Bitmap);
      finally
        Bitmap.Free;
      end;
    end;
  end; // <-- Y esta otra
end;
Responder Con Cita
  #13  
Antiguo 02-11-2006
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Perdona. Estoy avergonzado.

Esto de ir acelerado no es nada bueno. Seguro que si me lo hubiese mirado todo con más detenimiento estas cosas no me pasarían.
Procuraré leer más detenidament la próxima vez.

Muchas gracias por tu paciencia!

Ciao!
Responder Con Cita
  #14  
Antiguo 15-01-2023
esublim esublim is offline
Miembro
 
Registrado: dic 2022
Posts: 40
Poder: 0
esublim Va por buen camino
alguien tiene idea de como hacerlo en firemonkey=?
Responder Con Cita
  #15  
Antiguo 15-01-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, crea un hilo con tu problema, este es de hace 17 años, y no has dicho nada relevante para que se te pueda ayudar.
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
Thumbnail para zoom oregon Gráficos 5 20-10-2006 09:47:13
Imágenes con zoom mutant09 Gráficos 2 28-05-2004 19:11:34
Zoom de Imágenes Mariana Varios 2 14-09-2003 06:33:19
Zoom con Delphi6 en XP de un TRichEdit Beckham Varios 3 08-08-2003 21:02:13


La franja horaria es GMT +2. Ahora son las 18:07:27.


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