Foros del Web » Programación para mayores de 30 ;) » .NET »

AYUDA! Como tomar un objeto Graphics y guardalo como tipo Image

Estas en el tema de AYUDA! Como tomar un objeto Graphics y guardalo como tipo Image en el foro de .NET en Foros del Web. HOlaaaa, como stan?? necesito ayuda urgente!!! bueno, esto es a partir de un problema que tenia anteriormente. Tengo una imagen y la quiero rotar a ...
  #1 (permalink)  
Antiguo 14/02/2008, 17:16
 
Fecha de Ingreso: enero-2008
Ubicación: León, Guanajuato
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
AYUDA! Como tomar un objeto Graphics y guardalo como tipo Image

HOlaaaa, como stan??
necesito ayuda urgente!!!

bueno, esto es a partir de un problema que tenia anteriormente. Tengo una imagen y la quiero rotar a cualquier angulo (10,30,78, etc..)
la unica manera que encontre fue creando un objeto tipo graphics y hacer la rotación. Ahora, lo que quiero es tomar la imagen que ya esta rotado y trabajarla como tipo Image o como tipo Bitmap. Ademas, quiero mostrar la imagen rotada
en un picturebox, sin embargo, me muestra la imagen original!
Alguna sugerencia?? Este es mi codigo:

Graphics g = this.CreateGraphics();
g.Clear(this.BackColor);
Bitmap imagen = new Bitmap(@"C:\Documents and Settings\YanEtSuKy\Mis documentos\Mis imágenes\gifs\gracias.bmp");
g.DrawImage(imagen, 0, 0, 200, 200);

Matrix X = new Matrix();
X.Rotate(30);
g.Transform = X;
g.DrawImage(imagen, new Rectangle(205, 0, 200, 200), 0, 0, imagen.Width, imagen.Height, GraphicsUnit.Pixel);

pictureBox1.Image = imagen;

imagen.Dispose();
g.Dispose();


Gracias!
  #2 (permalink)  
Antiguo 20/02/2008, 20:03
 
Fecha de Ingreso: enero-2008
Ubicación: León, Guanajuato
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: AYUDA! Como tomar un objeto Graphics y guardalo como tipo Image

pues ya logre hacer lo que queria.. con unos ligeros cambios en el código, pero
asi quedo finalmente:

int tamaño = (int)(Math.Sqrt(Math.Pow(x, 2.0) + Math.Pow(y, 2.0))); // Determinar la diagonal de la imagen original
Bitmap imagen1 = new Bitmap(tamaño, tamaño); // Crear una imagen de tamaño doble que el original

Graphics g = Graphics.FromImage(imagen1); // Crear el objeto graphics
g.Clear(this.BackColor); // Y pintarlo del color del form
Matrix X = new Matrix(); // Crear la matriz de transformacion

// Rectangulo en el que se ira dibujando la imagen (origenX, origenY, tamañoX, tamañoY)
Rectangle CentrarImagen = new Rectangle((tamaño - x) / 2, (tamaño - y) / 2, x, y);

//Punto de origen a partir del cual se irá girando la imagen
Point punto = new Point(tamaño / 2, tamaño / 2);

X.RotateAt(angulo, punto, MatrixOrder.Append);
g.Transform = X;

g.DrawImage(imagen, CentrarImagen);
pictureBox2.Image = imagen1;

ya no necesité hacer el cambio de Graphics a Bitmap, ya que eso
literalmente es imposible ya que el C# no lo permite, si no que cree otra bitmap del tamaño
doble que el original para que asi haya espacio para que mi imagen gire libremente y esa segunda imagen (imagen1) ya la puedo trabajar y mostrar en un pictureBox.

por si a alguien le sirve!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:31.