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 04-05-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
Copiar selección de una imagen

Hola, quiero saber cómo puedo guardar un trozo de un Timage que he seleccionado mediante un Imagen->Canvas->Rectangle(...) para luego hacer operaciones con esa selección.
Se que para copiar se utiliza esto:
Clipboard()->Assign(Imagen->Picture); pero es que yo no quiero copiar la imagen entera, sino solo la selección... y además creo que si por ejemplo quiero cambiarle el color a esa seleccion lo tendria q guardar en otra imagen auxiliar y depues volverla a pegar en la misma posicion de donde estaba.... pero no se como copiar ni guardar ese Rectangle...

Saludos.
Responder Con Cita
  #2  
Antiguo 05-05-2008
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
Hola, FastHorse.

Fijate en este código

Código Delphi [-]
var o,d:trect;
    c:TBitmap;
begin
  c:=TBitmap.Create;
  c.Height:=100;
  c.Width:=100;
  d.Left:=0;
  d.Top:=0;
  d.Right:=100;
  d.Bottom:=100;
  o:=d;
  c.Canvas.CopyRect(d,img1.Canvas,o);
  c.Canvas.Ellipse(1,1,10,10);
  img1.Canvas.CopyRect(o,c.Canvas,d);
end;

Acá tenemos la imagen original img1. El rectángulo que copiamos es (0,0,100,100), este valor lo tendrías que tener guardado por ahí y corresponde con la selección hecha.

Copiamos al canvas del bitmap auxiliar y hacemos alguna cosa (como escribir una elipse) y después volvemos a dibujar con CopyRect en la imagen de pantalla.

Espero te sirva.

Saludongos.
Responder Con Cita
  #3  
Antiguo 06-05-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
ok, ya entiendo, pero con el primer COpyRect que se hace:
c.Canvas.CopyRect(d,img1.Canvas,o); copias la imagen entera en la auxiliar y después copias la eclipse con c.Canvas.Ellipse(1,1,10,10); pero y si solo quiero modificar la elipse??? copiaría solo la elipse en la imagen auxiliar y después la copiaria en imagen de la misma manera asi no? : img1.Canvas.CopyRect(o,c.Canvas,d);.
Es que creo q no lo entiendo bien, porque quien es d???

Saludos.
Responder Con Cita
  #4  
Antiguo 06-05-2008
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
A ver, a ver.

Con el primer CopyRect lo que hago es copiar un pedazo de la imagen original (img1) a un TBitMap auxiliar (c). Es decir, que copiaría la parte que "fue seleccionada". En este caso yo puse 100x100 por comodidad, pero sería los valores de un TRect que vos tendrías guardado de cuando se seleccionó en la imagen.

Lo de dibujar una elipse es sólo un ejemplo de que nosotros trabajábamos sobre esa selección antes de volver a "pegarla" en la imagen original. Nada más.

¿Quién es d? Bueno, d y o son las coordenadas de destino y de origen de lo que se va a copiar. Nótese que en la segunda llamada se usa el origen como destino, y el destino como origen, justamente porque volvemos a copiar todo al mismo lugar de donde venía...

Cita:
[...] cómo puedo guardar un trozo de un Timage que he seleccionado mediante un Imagen->Canvas->Rectangle(...) para luego hacer operaciones con esa selección.
Se que para copiar se utiliza esto:
Clipboard()->Assign(Imagen->Picture); pero es que yo no quiero copiar la imagen entera, sino solo la selección
Código Delphi [-]
c.Canvas.CopyRect(d,img1.Canvas,o);
Siendo img la imagen original y o el rectángulo de la selección.

Cita:
[...] y además creo que si por ejemplo quiero cambiarle el color a esa seleccion lo tendria q guardar en otra imagen auxiliar y depues volverla a pegar en la misma posicion de donde estaba
Código Delphi [-]
c.Canvas.Ellipse(1,1,10,10); //Toco alguna cosa de la imagen como, digamos, dibuajrle algo.
img1.Canvas.CopyRect(o,c.Canvas,d);//Vuelvo a poner en su lugar la imagen toqueteada.

¿Estamos más claros ahora? Cualquier cosa, preguntá de nuevo.

Saludetes.
Responder Con Cita
  #5  
Antiguo 08-05-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
Ah vale, vale, ya entiendo, es que pensé que la eclipse era como mi Rectangle...
Pues muchas gracias, me pongo manos a la obra con ello.

Saludos.
Responder Con Cita
  #6  
Antiguo 17-05-2008
fasthorse fasthorse is offline
Miembro
 
Registrado: ene 2007
Posts: 90
Poder: 18
fasthorse Va por buen camino
Hola, hay una cosa que no me va, y es que no se como sacar de aquí las coordenadas de destino...

Imagen->Canvas->MoveTo(origen.x, origen.y);
Imagen->Canvas->MoveTo(origen.x, origen.y);
Imagen->Canvas->Rectangle(origen.x, origen.y, X,Y);
Imagen->Canvas->CopyRect(destino, Imagen->Canvas, destino);

Gracias.
Responder Con Cita
  #7  
Antiguo 19-05-2008
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
Hmm... A ver. No sé si entiendo bien lo que decís.

Las coordenadas de destino en la imagen temporal que uno va a usar para dibujar, son (0,0,alto,ancho), donde alto y ancho son los de la selección.

Las coordenadas de destino en la imagen original son las mismas que el origen en la imagen original. Después de todo queremos poner exactamente lo que estaba antes (pero modificado) en el mismo lugar que estaba antes.

De ahí que se use el mismo TRect para el origen y el destino. ¿No?
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
Selección de una imagen fasthorse C++ Builder 22 10-04-2008 19:24:48
Imprimir por seleccion? danytorres Impresión 4 27-11-2006 19:15:59
Copiar pegar y cortar una imagen!!!! Juangu Gráficos 4 09-06-2005 18:28:24
Seleccion en DBLookUpComboBox NuncaMas Varios 1 22-12-2003 18:41:21
una seleccion YolandaM Impresión 2 04-10-2003 20:11:59


La franja horaria es GMT +2. Ahora son las 10:02:17.


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