Copiar trozo d imagen

31/05/2005 - 20:45 por Kone | Informe spam
Hola, hasta ahora me bastaba con copiar la imagen completa d un PictureBox,
pero ahora necesito poder copiar una porción de la imagen, utilizando claro
las funciones del GDI. Estoy dandole mil vueltas pero no consigo capturar
una porcion d imagen. Alguien me podria dar alguna pista d como hacerlo??

salu2 y gracias

Preguntas similare

Leer las respuestas

#1 Tristan
31/05/2005 - 21:44 | Informe spam
Para dibujar la nueva imagen recortada, utiliza el método DrawImage.

Este código crea una nueva imagen de 200x200 pixels, en la que se dibuja un
area recortada de la imagen de PictureBox1

Bitmap imagen2 = new Bitmap(200, 200);
Graphics lienzo = Graphics.FromImage(PictureBox1.Image);
Rectangle recorte = new Rectangle(10, 20, 50, 100);
lienzo.DrawImage(imagen, 0, 0, recorte, GraphicsUnit.Pixel);
PictureBox2.Image = imagen2;

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Kone
01/06/2005 - 01:02 | Informe spam
Hola Juan Carlos. He estado probando tu ejemplo pero no me funciona. Primero
que en DrawImage, usas "imagen" que no se que imagen es y despues creo que
"imagen2" no contiene nada al final de todo. En base a tu codigo he probado
con éste:

Graphics lienzo = Graphics.FromImage(PictureBox1.Image);

Rectangle recorte = new Rectangle(10, 20, 100, 100);

lienzo.DrawImage(PictureBox1.Image, 0, 0, recorte, GraphicsUnit.Pixel);

Pero no me dibuja nada en el picturebox.

un saludo


"Tristan" escribió en el mensaje
news:
Para dibujar la nueva imagen recortada, utiliza el método DrawImage.

Este código crea una nueva imagen de 200x200 pixels, en la que se dibuja
un area recortada de la imagen de PictureBox1

Bitmap imagen2 = new Bitmap(200, 200);
Graphics lienzo = Graphics.FromImage(PictureBox1.Image);
Rectangle recorte = new Rectangle(10, 20, 50, 100);
lienzo.DrawImage(imagen, 0, 0, recorte, GraphicsUnit.Pixel);
PictureBox2.Image = imagen2;

Juan Carlos Badiola
MVP - C#

Respuesta Responder a este mensaje
#3 Kone
01/06/2005 - 01:37 | Informe spam
Bueno pues al fin di con la solución. Resulta que poniendo PictureBox1.Image
como origen de la imagen a recortar no me funciona. Sin embargo si pongo un
fichero imagen existente como origen si funciona, pero no me sirve. La
solucion ha sido la siguiente:

Image newImage = Image.FromHbitmap(new
Bitmap(PictureBox1.Image).GetHbitmap());

Así si que almacena el newImage la imagen actual del PictureBox.

Un saludo

one" escribió en el mensaje
news:X16ne.1005023$
Hola Juan Carlos. He estado probando tu ejemplo pero no me funciona.
Primero que en DrawImage, usas "imagen" que no se que imagen es y despues
creo que "imagen2" no contiene nada al final de todo. En base a tu codigo
he probado con éste:

Graphics lienzo = Graphics.FromImage(PictureBox1.Image);

Rectangle recorte = new Rectangle(10, 20, 100, 100);

lienzo.DrawImage(PictureBox1.Image, 0, 0, recorte, GraphicsUnit.Pixel);

Pero no me dibuja nada en el picturebox.

un saludo


"Tristan" escribió en el mensaje
news:
Para dibujar la nueva imagen recortada, utiliza el método DrawImage.

Este código crea una nueva imagen de 200x200 pixels, en la que se dibuja
un area recortada de la imagen de PictureBox1

Bitmap imagen2 = new Bitmap(200, 200);
Graphics lienzo = Graphics.FromImage(PictureBox1.Image);
Rectangle recorte = new Rectangle(10, 20, 50, 100);
lienzo.DrawImage(imagen, 0, 0, recorte, GraphicsUnit.Pixel);
PictureBox2.Image = imagen2;

Juan Carlos Badiola
MVP - C#





Respuesta Responder a este mensaje
#4 Tristan
01/06/2005 - 13:11 | Informe spam
Perdón. Al escribir de cabeza el código me he equivocado en un detalle. Esto
si debería funcionar:

Bitmap imagen2 = new Bitmap(200, 200);
Graphics lienzo = Graphics.FromImage(imagen2);
Rectangle recorte = new Rectangle(10, 20, 50, 100);
lienzo.DrawImage(tuPictureBox.Image, 0, 0, recorte, GraphicsUnit.Pixel);
PictureBox2.Image = imagen2;

Juan Carlos Badiola Saiz
MVP - C#
Respuesta Responder a este mensaje
#5 Tristan
01/06/2005 - 13:13 | Informe spam
Bueno, no deberías necesitar los métodos que trabajan con handles. Solo
existen por compatibilidad con el GDI de win32.

Prueba el segundo ejemplo que te he dejado. Debería funcionar.

Juan Carlos Badiola Saiz
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida