Este artigo irá apresentar em. Como usar código para desenhar gráficos no Net, assim como gráficos gerados com MS Excel. Você também pode desenhar uma tabela como DataGrid.
existir. Net, a Microsoft nos fornece a classe de desenho (System.Drawing.Imaging), que possui as funções básicas de desenho. Por exemplo: linhas retas, polilinhas, retângulos, polígonos, ovais, setores, curvas, etc., para que gráficos gerais possam ser desenhados diretamente através do código. A seguir, apresentamos algumas funções de desenho:
Bitmap bMap=new Bitmap(500.500) //Define o tamanho da imagem;
bMap.Save(Stream,ImageCodecInfo) //Salva a imagem no fluxo de saída especificado;
Graphics gph //Definir ou criar um objeto de desenho GDI;
PointF cPt //Define as coordenadas x, y no plano bidimensional;
DrawString(string,Font,Brush,PonitF) //Use os objetos Brush e Font especificados para desenhar a string especificada no retângulo ou ponto especificado;
DrawLine(Pen,Ponit,Ponit) //Use o objeto pen (Pen) especificado para desenhar uma linha reta entre os dois pontos especificados;
DrawPolygon(Pen,Ponit[]) //Use o objeto caneta (Pen) especificado para desenhar o polígono especificado, como triângulo, quadrilátero, etc.;
FillPolygon(Brush,Ponit[]) //Preenche o polígono especificado com o objeto pincel (Brush) especificado;
DrawEllipse(Pen,x,y,Width,Height) //Use a caneta especificada para desenhar uma elipse definida pela borda;
FillEllipse(Brush,x,y,Width,Height) //Use o pincel especificado para preencher uma elipse definida pela borda;
DrawRectangle(Pen,x,y,Width,Height) //Use a caneta especificada para desenhar um retângulo com pontos de coordenadas, largura e altura especificados;
DrawPie(Pen,x,y,Width,Height,startAngle,sweepAngle) //Use a caneta especificada para desenhar um setor composto pelo ponto de coordenada especificado, largura, altura e dois raios;
OK, isso é tudo. Os parâmetros foram abreviados. Acredito que no processo de uso real todos terão uma experiência mais profunda. Finalmente, vamos ver como usar essas funções de desenho (gráfico de linhas) através de um exemplo simples.
O código para desenhar o gráfico de linhas acima é o seguinte:
//inicialização dos dados
string[] mês=nova string[12]{"janeiro","fevereiro","março","abril","maio","junho","julho","agosto" ,"setembro","outubro" ,"Novembro","Dezembro"};
float[] d = novo float[12]{20,5F,60,10,8F,15,6F,30,70,9F,50,3F,30,7F,70,50,4F,30,8F,20};
//Inicialização do desenho
Bitmap bMap=novo Bitmap(500.500);
Gráficos gph=Graphics.FromImage(bMap);
gph.Clear(Color.White)
;
PontoF[] xPt=novo PontoF[3]{novo PontoF(cPt.Y+15,cPt.Y),novo PontoF(cPt.Y,cPt.Y-8),novo PontoF(cPt.Y,cPt.Y+ 8) )};//triângulo do eixo X
PontoF[] yPt=novo PontoF[3]{novo PontoF(cPt.X,cPt.X-15),novo PontoF(cPt.X-8,cPt.X),novo PontoF(cPt.X+8,cPt. X)};//triângulo do eixo Y
gph.DrawString("Gráfico de volume de produção mensal de um determinado produto em uma fábrica", new Font("宋体", 14), Brushes.Black, new PointF(cPt.X+60, cPt.X));//Gráfico título
//Desenha o eixo X
gph.DrawLine(Canetas.Preto, cPt.X,cPt.Y,cPt.Y,cPt.Y);
gph.DrawPolygon(Pens.Preto,xPt);
gph.FillPolygon(novo SolidBrush(Color.Black),xPt);
gph.DrawString("Mês", new Font("宋体", 12), Brushes.Black, new PointF(cPt.Y+10, cPt.Y+10));
//Desenha o eixo Y
gph.DrawLine(Canetas.Preto, cPt.X,cPt.Y,cPt.X,cPt.X);
gph.DrawPolygon(Pens.Black,yPt);
gph.FillPolygon(novo SolidBrush(Color.Black),yPt);
gph.DrawString("Unidade (10.000)", new Font("宋体", 12), Brushes.Black, new PointF(0, 7));
para(int i=1;i<=12;i++)
{
//Desenha a escala do eixo Y
se (eu<11)
{
gph.DrawString((i*10).ToString(), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X-30, cPt.Yi*30-6));
gph.DrawLine(Canetas.Preto, cPt.X-3,cPt.Yi*30,cPt.X,cPt.Yi*30);
}
//Desenha itens do eixo X
gph.DrawString(mês[i-1].Substring(0,1), new Font("宋体", 11), Brushes.Black, novo PointF(cPt.X+i*30-5, cPt.Y+5 ));
gph.DrawString(mês[i-1].Substring(1,1), new Font("宋体", 11), Brushes.Black, novo PointF(cPt.X+i*30-5, cPt.Y+20 ));
if(mês[i-1].Comprimento>2) gph.DrawString(mês[i-1].Substring(2,1), new Font("宋体", 11), Brushes.Black, novo PointF(cPt. X+i*30-5, cPt.Y+35));
//desenha pontos
gph.DrawEllipse(Pens.Black,cPt.X+i*30-1.5F,cPt.Yd[i-1]*3-1.5F,3,3);
gph.FillEllipse(novo SolidBrush(Color.Black),cPt.X+i*30-1.5F,cPt.Yd[i-1]*3-1.5F,3,3);
//desenha valores numéricos
gph.DrawString(d[i-1].ToString(), new Font("宋体", 11), Brushes.Black, novo PointF(cPt.X+i*30,cPt.Yd[i-1]*3 ));
//desenha uma polilinha
if(i>1) gph.DrawLine(Pens.Red,cPt.X+(i-1)*30,cPt.Yd[i-2]*3,cPt.X+i*30,cPt.Yd[i- 1]*3);
}
//Salva a imagem de saída
bMap.Save(Response.OutputStream, ImageFormat.Gif)