Este artículo se presentará. Cómo usar código para dibujar gráficos en Net, tal como los gráficos generados con MS Excel. También puedes dibujar una tabla como DataGrid.
existir. Net, Microsoft nos proporciona la clase de dibujo (System.Drawing.Imaging), que tiene las funciones básicas de dibujo. Por ejemplo: líneas rectas, polilíneas, rectángulos, polígonos, óvalos, sectores, curvas, etc., para que los gráficos generales se puedan dibujar directamente mediante código. A continuación, presentamos algunas funciones de dibujo:
Mapa de bits bMap=new Bitmap(500,500) //Definir tamaño de imagen;
bMap.Save(Stream,ImageCodecInfo) //Guarda la imagen en el flujo de salida especificado;
Graphics gph //Definir o crear un objeto de dibujo GDI;
PointF cPt //Definir las coordenadas x, y en el plano bidimensional;
DrawString(string,Font,Brush,PonitF) //Utilice los objetos Brush y Font especificados para dibujar la cadena especificada en el rectángulo o punto especificado;
DrawLine(Pen,Ponit,Ponit) //Utilice el objeto de lápiz especificado (Pen) para dibujar una línea recta entre los dos puntos especificados;
DrawPolygon(Pen,Ponit[]) //Utilice el objeto de lápiz especificado (Pen) para dibujar el polígono especificado, como un triángulo, un cuadrilátero, etc.;
FillPolygon(Brush,Ponit[]) //Rellena el polígono especificado con el objeto de pincel (Brush) especificado;
DrawEllipse(Pen,x,y,Width,Height) //Utiliza el lápiz especificado para dibujar una elipse definida por el borde;
FillEllipse(Brush,x,y,Width,Height) //Utiliza el pincel especificado para rellenar una elipse definida por el borde;
DrawRectangle(Pen,x,y,Width,Height) //Utilice el lápiz especificado para dibujar un rectángulo con puntos de coordenadas, ancho y alto especificados;
DrawPie(Pen,x,y,Width,Height,startAngle,sweepAngle) //Utilice el lápiz especificado para dibujar un sector compuesto por el punto de coordenadas especificado, ancho, alto y dos rayos;
Bien, eso es todo. Los parámetros han sido abreviados. Creo que en el proceso de uso real, todos tendrán una experiencia más profunda. Finalmente, veamos cómo usar estas funciones de dibujo (gráfico de líneas) a través de un ejemplo simple.
El código para dibujar el gráfico de líneas anterior es el siguiente:
//inicialización de datos
cadena[] mes=nueva cadena[12]{"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre" ,"noviembre","diciembre"};
flotador[] d=nuevo flotador[12]{20.5F,60,10.8F,15.6F,30,70.9F,50.3F,30.7F,70,50.4F,30.8F,20};
//Inicialización del dibujo
Mapa de bits bMap=nuevo mapa de bits(500,500);
Gráficos gph=Graphics.FromImage(bMap);
gph.Clear(Color.White);
PuntoF cPt=nuevo PuntoF(40,420);//punto central
PuntoF[] xPt=nuevo PuntoF[3]{nuevo PuntoF(cPt.Y+15,cPt.Y),nuevo PuntoF(cPt.Y,cPt.Y-8),nuevo PuntoF(cPt.Y,cPt.Y+ 8 )};//triángulo del eje X
PuntoF[] yPt=nuevo PuntoF[3]{nuevo PuntoF(cPt.X,cPt.X-15),nuevo PuntoF(cPt.X-8,cPt.X),nuevo PuntoF(cPt.X+8,cPt. X)};//Triángulo del eje Y
gph.DrawString("Gráfico de volumen de producción mensual de un determinado producto en una fábrica", new Font("宋体", 14), Brushes.Black, new PointF(cPt.X+60, cPt.X));//Gráfico título
//Dibujar el eje X
gph.DrawLine(Plumas.Negro, cPt.X,cPt.Y,cPt.Y,cPt.Y);
gph.DrawPolygon(Pens.Negro,xPt);
gph.FillPolygon(nuevo SolidBrush(Color.Negro),xPt);
gph.DrawString("Mes", nueva fuente("宋体", 12), Brushes.Black, nuevo PointF(cPt.Y+10, cPt.Y+10));
//Dibujar el eje Y
gph.DrawLine(Pens.Negro, cPt.X,cPt.Y,cPt.X,cPt.X);
gph.DrawPolygon(Pens.Black,yPt);
gph.FillPolygon(nuevo SolidBrush(Color.Negro),yPt);
gph.DrawString("Unidad (10,000)", nueva Fuente("宋体", 12), Brushes.Black, nuevo PuntoF(0, 7));
para(int i=1;i<=12;i++)
{
//Dibujar la escala del eje Y
si (yo<11)
{
gph.DrawString((i*10).ToString(), nueva fuente("宋体", 11), Brushes.Black, nuevo PointF(cPt.X-30, cPt.Yi*30-6));
gph.DrawLine(Plumas.Negro, cPt.X-3,cPt.Yi*30,cPt.X,cPt.Yi*30);
}
//Dibujar elementos del eje X
gph.DrawString(mes[i-1].Substring(0,1), nueva fuente("宋体", 11), Brushes.Black, nuevo PointF(cPt.X+i*30-5, cPt.Y+5 ));
gph.DrawString(mes[i-1].Substring(1,1), nueva fuente("宋体", 11), Brushes.Black, nuevo PointF(cPt.X+i*30-5, cPt.Y+20 ));
if(mes[i-1].Longitud>2) gph.DrawString(mes[i-1].Substring(2,1), nueva fuente("宋体", 11), Brushes.Black, nuevo PointF(cPt. X+i*30-5, cPt.Y+35));
//dibujar puntos
gph.DrawEllipse(Pens.Black,cPt.X+i*30-1.5F,cPt.Yd[i-1]*3-1.5F,3,3);
gph.FillEllipse(nuevo SolidBrush(Color.Negro),cPt.X+i*30-1.5F,cPt.Yd[i-1]*3-1.5F,3,3);
//dibuja valores numéricos
gph.DrawString(d[i-1].ToString(), nueva fuente("宋体", 11), Brushes.Black, nuevo PointF(cPt.X+i*30,cPt.Yd[i-1]*3 ));
//Dibujar una polilínea
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);
}
//Guardar la imagen de salida
);