Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-12-2014
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
agrandar Imagen en delphi7

Hola Dilferos.
Necesito hacer una pequeña cosa, tengo un campo longbolb, donde tengo una imagen. Necesito agrandar mas esa imagen, es decir, que el usuario pueda pasar una lupa por encima de ella y agrandar mas la imagen o parte de ella (por donde pasa la lupa). Espero haberme explicado bien.

Gracias.
Responder Con Cita
  #2  
Antiguo 03-12-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Decir que seguro que hay componentes para realizar esto, de todas forma si deseas hacerlo "a mano", no creo que sea complicado.

Se trata de utilizar un canvas (podría ser otro TImage) y para cada pixel (color) de la imagen original pintar 2 (por ejemplo) iguales, en la imagen destino (que será la lupa).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 03-12-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
He realizado un par de pruebas para ver si realmente se solventaba el problema utilizando lo comentado y parece que sí.
Aquí puedes ver cómo funciona...



El ejemplo está en el FTP del club y como adjunto.
Archivos Adjuntos
Tipo de Archivo: zip Test_Lupa_Imagen.zip (86,0 KB, 8 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 03-12-2014 a las 11:27:17.
Responder Con Cita
  #4  
Antiguo 03-12-2014
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
Muchas gracias.

Lo he probado y puede valer aunque es un poco lento, pero es una manera de empezar.

Reitero las gracias.
Responder Con Cita
  #5  
Antiguo 03-12-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
A veces no nos paramos a pensar las cosas y el primer resultado, aunque funciona, no es óptimo.
Seguramente esto sea lo que me ha pasado a mí esta vez.

Luego he pensado que tal vez sea más efectivo (puedes probarlo y comentarlo) utilizar los métodos de TCanvas disponibles.
TCanvas, posee el método para copiar una porción de un Canvas a otro. Es el método CopyRect. Esa porción de Canvas se copia utilizando el modo CopyMode .

De esta forma si pones un botón en el form y colocas el siguiente código:

Código Delphi [-]
var
  sRect, dRect:TRect;
begin
  // esto solo es para "limpiar" la zona destino
  FormShow(nil);
  // definimos los 2 rectángulos; el destino es el doble del original
  sRect.Left := 0; sRect.Top := 0; sRect.Right := 40; sRect.Bottom := 40;
  dRect.Left := 0; dRect.Top := 0; dRect.Right := 80; dRect.Bottom := 80;
  // Copiamos una zona entre canvas
  Image2.Picture.Bitmap.Canvas.CopyRect(dRect, Image1.Picture.Bitmap.Canvas, sRect);

Verás que se copia una poción de la imagen superior (Image1 - 40x40) en la imagen inferior (Image2) con un tamaño del doble (80x80), con lo que conseguimos un efecto de lupa.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 03-12-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Probado y efectivamente no hay color:



Link a la segunda versión (CopyRect) en el FTP.
Archivos Adjuntos
Tipo de Archivo: zip Test_Lupa_Imagen_CopyCanvas.zip (89,5 KB, 6 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
Problema al agrandar este nuevo componente José Luis Garcí OOP 6 01-06-2013 14:55:04
Agrandar botones al pasar el cursor LuisAlf:: HTML, Javascript y otros 4 07-10-2010 03:06:22
Como cargo una imagen desde Mysql hacia aplicacion Delphi7.0? gozi Conexión con bases de datos 1 06-02-2006 19:41:11
Fuentes para negrillas y agrandar las letras Jorge Taveras Impresión 2 16-04-2005 22:47:31
agrandar fuente en ticket perico Impresión 8 04-02-2005 02:55:29


La franja horaria es GMT +2. Ahora son las 01:18: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