In diesem Artikel wird vorgestellt. So verwenden Sie Code zum Zeichnen von Diagrammen in Net, genau wie Diagramme, die mit MS Excel erstellt wurden. Sie können auch eine Tabelle wie DataGrid zeichnen.
existieren. Net stellt uns Microsoft die Zeichenklasse (System.Drawing.Imaging) zur Verfügung, die über die Grundfunktionen des Zeichnens verfügt. Zum Beispiel: gerade Linien, Polylinien, Rechtecke, Polygone, Ovale, Sektoren, Kurven usw., sodass allgemeine Grafiken direkt durch Code gezeichnet werden können. Als nächstes stellen wir einige Zeichenfunktionen vor:
Bitmap bMap=new Bitmap(500,500) //Bildgröße definieren;
bMap.Save(Stream,ImageCodecInfo) //Speichern Sie das Bild im angegebenen Ausgabestream;
Graphics gph //GDI-Zeichnungsobjekt definieren oder erstellen;
PointF cPt //Definieren Sie die x- und y-Koordinaten in der zweidimensionalen Ebene;
DrawString(string,Font,Brush,PonitF) //Verwenden Sie die angegebenen Brush- und Font-Objekte, um die angegebene Zeichenfolge am angegebenen Rechteck oder Punkt zu zeichnen;
DrawLine(Pen,Ponit,Ponit) //Verwenden Sie das angegebene Stiftobjekt (Pen), um eine gerade Linie zwischen den angegebenen zwei Punkten zu zeichnen;
DrawPolygon(Pen,Ponit[]) //Verwenden Sie das angegebene Stiftobjekt (Pen), um das angegebene Polygon zu zeichnen, z. B. Dreieck, Viereck usw.;
FillPolygon(Brush,Ponit[]) //Füllen Sie das angegebene Polygon mit dem angegebenen Pinselobjekt (Brush);
DrawEllipse(Pen,x,y,Width,Height) //Verwenden Sie den angegebenen Stift, um eine durch den Rand definierte Ellipse zu zeichnen;
FillEllipse(Brush,x,y,Width,Height) //Verwenden Sie den angegebenen Pinsel, um eine durch den Rand definierte Ellipse zu füllen;
DrawRectangle(Pen,x,y,Width,Height) //Verwenden Sie den angegebenen Stift, um ein Rechteck mit angegebenen Koordinatenpunkten, Breite und Höhe zu zeichnen;
DrawPie(Pen,x,y,Width,Height,startAngle,sweepAngle) //Verwenden Sie den angegebenen Stift, um einen Sektor zu zeichnen, der aus dem angegebenen Koordinatenpunkt, der Breite, der Höhe und zwei Strahlen besteht;
OK, das ist alles. Die Parameter wurden abgekürzt. Ich glaube, dass jeder im tatsächlichen Nutzungsprozess eine tiefere Erfahrung machen wird. Schauen wir uns abschließend anhand eines einfachen Beispiels an, wie diese Zeichenfunktionen (Liniendiagramm) verwendet werden.
Der Code zum Zeichnen des obigen Liniendiagramms lautet wie folgt:
//Dateninitialisierung
string[] Monat=neuer String[12]{„Januar“, „Februar“, „März“, „April“, „Mai“, „Juni“, „Juli“, „August“, „September“, „Oktober“ ,„November“, „Dezember“};
float[] d=new float[12]{20.5F,60,10.8F,15.6F,30,70.9F,50.3F,30.7F,70,50.4F,30.8F,20};
//Zeichnungsinitialisierung
Bitmap bMap=new Bitmap(500,500);
Grafiken gph=Graphics.FromImage(bMap);
gph.Clear(Color.White);
PointF cPt=new PointF(40,420);//Mittelpunkt
PointF[] xPt=new PointF[3]{new PointF(cPt.Y+15,cPt.Y),new PointF(cPt.Y,cPt.Y-8),new PointF(cPt.Y,cPt.Y+ 8 )};//X-Achsen-Dreieck
PointF[] yPt=new PointF[3]{new PointF(cPt.X,cPt.X-15),new PointF(cPt.X-8,cPt.X),new PointF(cPt.X+8,cPt. X)};//Y-Achsen-Dreieck
gph.DrawString("Monatliches Produktionsvolumendiagramm eines bestimmten Produkts in einer Fabrik", new Font("宋体", 14), Brushes.Black, new PointF(cPt.X+60, cPt.X));//Chart Titel
//X-Achse zeichnen
gph.DrawLine(Pens.Black, cPt.X,cPt.Y ,cPt.Y,cPt.Y);
gph.DrawPolygon(Pens.Black,xPt);
gph.FillPolygon(new SolidBrush(Color.Black),xPt);
gph.DrawString("Month", new Font("宋体", 12), Brushes.Black, new PointF(cPt.Y+10, cPt.Y+10));
//Y-Achse zeichnen
gph.DrawLine(Pens.Black, cPt.X,cPt.Y,cPt.X,cPt.X);
gph.DrawPolygon(Pens.Black,yPt);
gph.FillPolygon(new SolidBrush(Color.Black),yPt);
gph.DrawString("Unit (10,000)", new Font("宋体", 12), Brushes.Black, new PointF(0, 7));
for(int i=1;i<=12;i++)
{
// Y-Achsen-Skala zeichnen
wenn (i<11)
{
gph.DrawString((i*10).ToString(), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X-30, cPt.Yi*30-6));
gph.DrawLine(Pens.Black, cPt.X-3,cPt.Yi*30,cPt.X,cPt.Yi*30);
}
// X-Achsen-Elemente zeichnen
gph.DrawString(month[i-1].Substring(0,1), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X+i*30-5, cPt.Y+5 ));
gph.DrawString(month[i-1].Substring(1,1), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X+i*30-5, cPt.Y+20 ));
if(month[i-1].Length>2) gph.DrawString(month[i-1].Substring(2,1), new Font("宋体", 11), Brushes.Black, new PointF(cPt. X+i*30-5, cPt.Y+35));
//Zeichne Punkte
gph.DrawEllipse(Pens.Black,cPt.X+i*30-1.5F,cPt.Yd[i-1]*3-1.5F,3,3);
gph.FillEllipse(new SolidBrush(Color.Black),cPt.X+i*30-1.5F,cPt.Yd[i-1]*3-1.5F,3,3);
//Zahlenwerte zeichnen
gph.DrawString(d[i-1].ToString(), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X+i*30,cPt.Yd[i-1]*3 ));
//Zeichne eine Polylinie
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);
}
//Speichern Sie das Ausgabebild
bMap.Save(Response.OutputStream, ImageFormat.Gif);
http://www.cnblogs.com/172838427/archive/2006/09/19/508688.html