![]() |
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. |
Hola, FastHorse.
Fijate en este código
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. |
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. |
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:
Siendo img la imagen original y o el rectángulo de la selección. Cita:
¿Estamos más claros ahora? Cualquier cosa, preguntá de nuevo. Saludetes. |
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. |
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. |
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? |
La franja horaria es GMT +2. Ahora son las 02:20:29. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi