sábado, 20 de outubro de 2007

Dica C#: Gerando dinamicamente imagens no browser


Com muita facilidade, podemos gerar imagens dinamicamente no browser com C#.NET. O trecho de código-fonte abaixo, pode ser inserido por exemplo, no evento Click de qualquer botão de um WebForm.

// Criando o objeto (através da classe Bitmap), que representa
// a imagem gerada dinamicamente pela aplicação.
Bitmap imagem = new Bitmap(250, 50);

// Obtendo uma referência da Classe Graphics apartir da imagem recém instanciada.
// Esse objeto possui métodos que lhe permite formar na memória todo o conteúdo
// do bitmap.
Graphics g = Graphics.FromImage(imagem);

// A partir de agora, você deve usar os recursos que
// a classe Graphics dispõe, que são muitos.
g.FillRectangle(Brushes.Brown, 0, 0, 250, 50); //Desenha um retângulo preenchido com cinza g.DrawRectangle(Pens.Black, 0, 0, 249, 49); // Desenha o contorno de um retângulo

//Obtendo uma imagem externa
System.Drawing.Image imagemExterna = System.Drawing.Image.FromFile(Server.MapPath("exemploImagemGif.gif"));
g.DrawImageUnscaled(imagemExterna, 2, 2); // Adicionando a imagem externa

Font fonte = new Font("Rockwell Extra Bold", 10, FontStyle.Regular);
g.DrawString("Gerando imagem", fonte, Brushes.White, 60, 20);

// Cria a imagem para no HTML via stream
imagem.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
g.Dispose();
imagem.Dispose();