PDA

Ver la Versión Completa : copiar la parte seleccionada de un imagen


fasthorse
05-05-2008, 09:31:55
Hola, otra preguntita, es que 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...
¿y habría algun método con el que se le pueda aplicar más o menos luz a la imagen?

Saludos.

escafandra
05-05-2008, 14:08:42
Pues aunque no es la forma más rápida, si es la más intuitiva y sencilla en el entorno VCL:

Crea un TImage en tiempo de ejecución con el operados new. Le asignas el tamaño apropiado para albergar la copia de tu imagen y con dos bucles anidados vas asignando los pixels copiando desde la imagen original a la copia (el nuevo TImage que has creado).

Los puntos de inicio y fin de tus bucles anidados son las coordenadas de tu rectángulo a copiar.


Saludos.

fasthorse
13-05-2008, 15:52:08
ok, y después para pegarla en la imagen original? es decir, de dónde yo la copie. Por ejemplo yo me copio el rectángulo de selección porque lo quiero poner en color rojo, entonces copio la selección en el Timage nuevo, la pongo a rojo y después para pegarla de nuevo en la imagen...¿Cuáles serían esas coordenadas?? y cómo se haría?.

Gracias

escafandra
13-05-2008, 17:10:55
Pues igual, solo que cambias sestino por origen y las coordenadas de destino serán diferentes que las del origen. Deberás tenes guardadas esas coordenadas previamente.

Revisa también:
TCanvas::CopyRect(const TRect &Dest, TCanvas* SourceCanvas, const TRect &Source);


Es posible que para lo que tu buscas te sea más cómodo.

Saludos.

fasthorse
14-05-2008, 20:05:03
ah ok, muchas gracias.