miércoles, 14 de octubre de 2009

GDI+ Drawing ASP NET Cuaros, circulos, graficas (pie,square,elipse)

Seguramente mas de algun día tendran la necesidad de crear cuadros o graficas de pie en una pagina asp net que sea dinamica, bueno con la libreria GDI+ Drawing lo pueden lograr.

En este primer ejemplo vamos hacer un cuadro y una linea.

Lo primero es llamar las librerias siguiente:
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Text;

ahora en el evento load de su pagina ingrese el siguiente codigo:

protected void Page_Load(object sender, EventArgs e)
{
Bitmap objBitmap; //inicio del objeto
Graphics objGraphics;

objBitmap = new Bitmap(400, 440); // tamaño que ocupara en la pagina
objGraphics = Graphics.FromImage(objBitmap);
objGraphics.Clear(Color.White); // Color de fondo de la pantalla

Pen p = new Pen(Color.Yellow, 0); // color de la linea del circulo.

Rectangle rect = new Rectangle(0, 0, 100, 50); // creado el cuadro
objGraphics.DrawRectangle(p, rect); // enviando a pantalla el cuadro

objGraphics.DrawLine(p,0,0,100,100); // creando linea

//enviando a pantalla atraves de una imagen.
objBitmap.Save(Response.OutputStream, ImageFormat.Gif);
objBitmap.Save(Server.MapPath("x.jpg"), ImageFormat.Jpeg);
objBitmap.Dispose();
objGraphics.Dispose();

}

el resultado esto sera asi:


si quiere un elipse solo tiene que cambiar
objGraphics.DrawRectangle(p, rect);
por
objGraphics.DrawEllipse(p, rect);

y tendran un circulo al lugar de un cuadro
ahora que estan listo para un ejemplo de verdad voy a crear pie con letras y colores.
para probarlo solo copien el siguiente codigo en su evento load.
no olvide agregar las librerias:

using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Text;

//codigo del load

Bitmap objBitmap;
Graphics objGraphics;

objBitmap = new Bitmap(400, 440);
objGraphics = Graphics.FromImage(objBitmap);
objGraphics.Clear(Color.White);
Pen p = new Pen(Color.Yellow, 0);
Rectangle rect = new Rectangle(10, 10, 280, 280);
objGraphics.DrawEllipse(p, rect);

Brush b1 = new SolidBrush(Color.Red);
Brush b2 = new SolidBrush(Color.Green);
Brush b3 = new SolidBrush(Color.Blue);
objGraphics.FillPie(b1, rect, 0f, 60f);
objGraphics.FillPie(b2, rect, 60f, 150f);
objGraphics.FillPie(b3, rect, 210f, 150f);

FontFamily fontfml = new FontFamily(GenericFontFamilies.Serif);
Font font = new Font(fontfml, 16);
SolidBrush brush = new SolidBrush(Color.Blue);
objGraphics.DrawString("Mi Primer PIE =)", font, brush, 70, 300);
objBitmap.Save(Response.OutputStream, ImageFormat.Gif);
objBitmap.Save(Server.MapPath("x.jpg"), ImageFormat.Jpeg);
objBitmap.Dispose();
objGraphics.Dispose();


el resultado es así:



Bueno espero que les sirva de algo.

Este post es para mi amigo Fernando, espero que te ayude con tu clavo.