Escribir en Imagen (Part II)

12/01/2007 - 22:06 por Pintamono | Informe spam
Logré colocar texto en una imagen gracias a un articulo que encontre acá:
http://www.bobpowell.net/modifyImage.htm

El problema que tengo ahora es que si bien la pagina da los resultados
esperados hay algo que no me gusta y es que la imagen la graba en el disco..

Esto es lo que estoy haciendo:


protected System.Web.UI.WebControls.Image CuadroImagen;

CuadroImagen.Visible=true;
System.Drawing.Image i =
System.Drawing.Image.FromFile("d:\\imagen\\untitled.jpg"); // imagen
original
Graphics g=Graphics.FromImage(i);

// desde acá comienzo a colocar el texto en la imagen a modificar

g.DrawString("531",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,84,94,25));
g.DrawString("96300",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,115,94,25));
g.DrawString(DateTime.Now.ToShortDateString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(136,115,94,25));
g.DrawString(TotalMontoPago.ToString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(365,210,94,25));
g.Dispose();

// hasta acá

string path =
"d:\\inetpub.alt\\webgp\\wwwgp\\imagen\\testimage"+DateTime.Now.Second.ToString()+".jpg";
// nueva imagan
//la imagen la grabo con los segundos de cuando fue creada para que no me
genere problemas si alguien mas esta haciendo lo mismo.

CuadroImagen.ImageUrl = path;
i.Save(path.ToString(),System.Drawing.Imaging.ImageFormat.Jpeg); // Grabo la
imagen.
i.Dispose();

La duda es: ¿Cómo puedo hacer para no grabar la imagen al disco y mostrarla
inmediatamente en el cuadro destinado para ello?, en mi caso CuadroImagen

Esta es la primera vez que trabajo con imagenes.

Gracias.

AIM: PintamonoChile
YIM: pintamono79 en yahoo punto es
IRC: Pinatmono-
Jabber: Pintamono@jabberes.org
Radio: http://pintamono.no-ip.org (OffLine)
Fotolog: http://www.fotolog.com/pintamono_/
Flickr: http://www.flickr.com/photos/pintamono/
Videos: http://www.youtube.com/user/pintamono
 

Leer las respuestas

#1 RFOG
12/01/2007 - 23:10 | Informe spam
Pues cuando quieras pintarla, llama al Invalidate del CuadroImagen,
sobreescribe el evento Paint, y allí la pintas. Si la pintas fuera del
Paint, cada vez que algo tape tu imagen, esta no se volverá a pintar. Y si
quieres que el .NET lo haga solo, asigna tu imagen a CuadroImagen, así:

CuadroImagen.Image=i;

La desventaja de este modo es que si ese cuadro es una composición o mezcla
dinámica, resulta bastante lento e ineficiente irla cambiando de esa forma.

Suponiendo que CuadroImage sea un PictureBox.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Nunca la persona llega a tal grado de perfección como cuando llena un
impreso de solicitud de trabajo.

"Pintamono" wrote in message
news:
Logré colocar texto en una imagen gracias a un articulo que encontre acá:
http://www.bobpowell.net/modifyImage.htm

El problema que tengo ahora es que si bien la pagina da los resultados
esperados hay algo que no me gusta y es que la imagen la graba en el
disco..

Esto es lo que estoy haciendo:


protected System.Web.UI.WebControls.Image CuadroImagen;

CuadroImagen.Visible=true;
System.Drawing.Image i =
System.Drawing.Image.FromFile("d:\\imagen\\untitled.jpg"); // imagen
original
Graphics g=Graphics.FromImage(i);

// desde acá comienzo a colocar el texto en la imagen a modificar

g.DrawString("531",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,84,94,25));
g.DrawString("96300",new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(45,115,94,25));
g.DrawString(DateTime.Now.ToShortDateString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(136,115,94,25));
g.DrawString(TotalMontoPago.ToString(),new
Font("Arial",11,FontStyle.Bold,GraphicsUnit.Point),Brushes.Black,new
RectangleF(365,210,94,25));
g.Dispose();

// hasta acá

string path =
"d:\\inetpub.alt\\webgp\\wwwgp\\imagen\\testimage"+DateTime.Now.Second.ToString()+".jpg";
// nueva imagan
//la imagen la grabo con los segundos de cuando fue creada para que no me
genere problemas si alguien mas esta haciendo lo mismo.

CuadroImagen.ImageUrl = path;
i.Save(path.ToString(),System.Drawing.Imaging.ImageFormat.Jpeg); // Grabo
la imagen.
i.Dispose();

La duda es: ¿Cómo puedo hacer para no grabar la imagen al disco y
mostrarla inmediatamente en el cuadro destinado para ello?, en mi caso
CuadroImagen

Esta es la primera vez que trabajo con imagenes.

Gracias.

AIM: PintamonoChile
YIM: pintamono79 en yahoo punto es
IRC: Pinatmono-
Jabber:
Radio: http://pintamono.no-ip.org (OffLine)
Fotolog: http://www.fotolog.com/pintamono_/
Flickr: http://www.flickr.com/photos/pintamono/
Videos: http://www.youtube.com/user/pintamono

Preguntas similares