บทความนี้จะแนะนำใน วิธีใช้โค้ดเพื่อวาดแผนภูมิใน Net เช่นเดียวกับแผนภูมิที่สร้างด้วย MS Excel คุณยังสามารถวาดตารางเช่น DataGrid ได้อีกด้วย
มีอยู่. Net, Microsoft ได้จัดเตรียมคลาสการวาดภาพ (System. Drawing.Imaging) ให้กับเราซึ่งมีฟังก์ชั่นพื้นฐานของการวาดภาพ ตัวอย่างเช่น: เส้นตรง เส้นหลายเส้น สี่เหลี่ยม รูปหลายเหลี่ยม วงรี เซกเตอร์ เส้นโค้ง ฯลฯ ดังนั้นจึงสามารถวาดกราฟิกทั่วไปผ่านโค้ดได้โดยตรง ต่อไป เราจะแนะนำฟังก์ชันการวาดภาพบางอย่าง:
บิตแมป bMap=บิตแมปใหม่ (500,500) //กำหนดขนาดรูปภาพ;
bMap.Save(Stream,ImageCodecInfo) //บันทึกภาพไปยังเอาต์พุตสตรีมที่ระบุ;
กราฟิก gph //กำหนดหรือสร้างวัตถุรูปวาด GDI
PointF cPt //กำหนดพิกัด x, y ในระนาบสองมิติ
DrawString(string,Font,Brush,PonitF) //ใช้วัตถุ Brush และ Font ที่ระบุเพื่อวาดสตริงที่ระบุที่สี่เหลี่ยมหรือจุดที่ระบุ
DrawLine(Pen,Ponit,Ponit) //ใช้วัตถุปากกา (ปากกา) ที่ระบุเพื่อวาดเส้นตรงระหว่างจุดสองจุดที่ระบุ
DrawPolygon(Pen,Ponit[]) //ใช้วัตถุปากกา (ปากกา) ที่ระบุเพื่อวาดรูปหลายเหลี่ยมที่ระบุ เช่น สามเหลี่ยม รูปสี่เหลี่ยมขนมเปียกปูน ฯลฯ
FillPolygon(Brush,Ponit[]) //เติมรูปหลายเหลี่ยมที่ระบุด้วยวัตถุแปรง (แปรง) ที่ระบุ;
DrawEllipse(Pen,x,y,Width,Height) //ใช้ปากกาที่ระบุเพื่อวาดวงรีที่กำหนดโดยเส้นขอบ
FillEllipse(Brush,x,y,Width,Height) //ใช้แปรงที่ระบุเพื่อเติมวงรีที่กำหนดโดยเส้นขอบ
DrawRectangle(ปากกา,x,y,ความกว้าง,ความสูง) //ใช้ปากกาที่ระบุเพื่อวาดรูปสี่เหลี่ยมผืนผ้าโดยมีจุดพิกัด ความกว้าง และความสูงที่ระบุ
DrawPie(Pen,x,y,Width,Height,startAngle,sweepAngle) //ใช้ปากกาที่ระบุเพื่อวาดเซกเตอร์ที่ประกอบด้วยจุดพิกัด ความกว้าง ความสูง และรังสีสองเส้นที่ระบุ
ตกลงนั่นคือทั้งหมด พารามิเตอร์ได้รับการย่อแล้ว ฉันเชื่อว่าในกระบวนการใช้งานจริงทุกคนจะมีประสบการณ์ที่ลึกซึ้งยิ่งขึ้น สุดท้ายนี้ เรามาดูวิธีใช้ฟังก์ชันการวาดเหล่านี้ (แผนภูมิเส้น) ผ่านตัวอย่างง่ายๆ
รหัสในการวาดแผนภูมิเส้นด้านบนมีดังนี้:
//การเริ่มต้นข้อมูล
สตริง[] เดือน=ใหม่ สตริง[12]{"มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม" ,"กันยายน", "ตุลาคม" ,"พฤศจิกายน", "ธันวาคม"};
ลอย[] d=ลอยใหม่[12]{20.5F,60,10.8F,15.6F,30,70.9F,50.3F,30.7F,70,50.4F,30.8F,20};
// การเริ่มต้นการวาด
บิตแมป bMap=บิตแมปใหม่ (500,500);
กราฟิก gph=Graphics.FromImage(bMap);
gph.Clear(Color.White);
PointF cPt=new PointF(40,420);//จุดกึ่งกลาง
PointF[] xPt=จุดใหม่F[3]{จุดใหม่F(cPt.Y+15,cPt.Y),จุดใหม่F(cPt.Y,cPt.Y-8),จุดใหม่F(cPt.Y,cPt.Y+ 8) )};//สามเหลี่ยมแกน X
PointF[] yPt=ใหม่ PointF[3]{PointF ใหม่(cPt.X,cPt.X-15),PointF ใหม่(cPt.X-8,cPt.X),PointF ใหม่(cPt.X+8,cPt. X);//สามเหลี่ยมแกน Y
gph.DrawString("แผนภูมิปริมาณการผลิตรายเดือนของผลิตภัณฑ์บางอย่างในโรงงาน", แบบอักษรใหม่ ("宋体", 14), Brushes.Black, new PointF(cPt.X+60, cPt.X));//Chart ชื่อ
//วาดแกน X
gph.DrawLine(Pens.Black, cPt.X,cPt.Y ,cPt.Y,cPt.Y);
gph.DrawPolygon(ปากกาสีดำ,xPt);
gph.FillPolygon(SolidBrush ใหม่ (Color.Black),xPt);
gph.DrawString("เดือน", ฟอนต์ใหม่("宋体", 12), Brushes.Black, new PointF(cPt.Y+10, cPt.Y+10));
//วาดแกน Y
gph.DrawLine(ปากกา.ดำ, cPt.X,cPt.Y,cPt.X,cPt.X);
gph.DrawPolygon(ปากกาสีดำ,yPt);
gph.FillPolygon(SolidBrush ใหม่ (Color.Black),yPt);
gph.DrawString("Unit (10,000)", new Font("宋体", 12), Brushes.Black, new PointF(0, 7));
สำหรับ(int i=1;i<=12;i++)
-
//วาดสเกลแกน Y
ถ้า (ฉัน<11)
-
gph.DrawString((i*10).ToString(), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X-30, cPt.Yi*30-6));
gph.DrawLine(ปากกาสีดำ, cPt.X-3,cPt.Yi*30,cPt.X,cPt.Yi*30);
-
//วาดรายการแกน X
gph.DrawString(เดือน[i-1].Substring(0,1), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X+i*30-5, cPt.Y+5 ));
gph.DrawString(เดือน[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));
//วาดจุด
gph.DrawEllipse(ปากกาสีดำ,cPt.X+i*30-1.5F,cPt.Yd[i-1]*3-1.5F,3,3);
gph.FillEllipse(SolidBrush ใหม่ (สีดำ),cPt.X+i*30-1.5F,cPt.Yd[i-1]*3-1.5F,3,3);
//วาดค่าตัวเลข
gph.DrawString(d[i-1].ToString(), new Font("宋体", 11), Brushes.Black, new PointF(cPt.X+i*30,cPt.Yd[i-1]*3 ));
//วาดเส้นหลายเส้น
ถ้า(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);
-
//บันทึกภาพที่ส่งออก
bMap.Save(Response.OutputStream, ImageFormat.Gif);
http://www.cnblogs.com/172838427/archive/2006/09/19/508688.html