sábado, 20 de outubro de 2007

Dica C#: desenhando uma curva de Bèzier no browser


Com C#, podemos facilmente desenhar dinamicamente uma curva de Bèzier. 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(400, 400);

// 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);

// Criando o objeto Pen. O construtor está recebendo a cor da linha e sua espessura
Pen canetaPreta = new Pen(Color.Black, 3);

// Criando os pontos para a formação da curva
PointF start = new PointF(100.0F, 100.0F);
PointF control1 = new PointF(200.0F, 10.0F);
PointF control2 = new PointF(350.0F, 50.0F);
PointF end1 = new PointF(500.0F, 100.0F);
PointF control3 = new PointF(600.0F, 150.0F);
PointF control4 = new PointF(650.0F, 250.0F);
PointF end2 = new PointF(500.0F, 300.0F);
PointF[] pontosDeBezier = { start, control1, control2, end1,
control3, control4, end2 };

// Desenhando a curva de Bèzier
g.FillRectangle(Brushes.White, 0, 0, 400, 400);
g.DrawBeziers(canetaPreta, pontosDeBezier);
imagem.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
g.Dispose();
imagem.Dispose();