C#实现绘制面形图表的方法详解
本例详细讲述了C#实现的面形图绘制例子,这是其中一个核心绘制文件的代码,代码中的里面的注释很多,也比较详细,相信对于初学者学习及理解C#图形绘制方面的技术要点、难点有所帮助。
C#绘制面形图的主要功能代码如下:
usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; usingSystem.IO; namespace绘制面形图 { publicpartialclassForm1:Form { publicForm1() { InitializeComponent(); } Graphicsg;//创建Graphics对象 privatevoidbutton1_Click(objectsender,EventArgse) { Bitmapbt=newBitmap(panel1.Width,panel1.Height);//实例化一个Bitmap对象 intflag=(panel1.Width-4)/6;//X轴的增值 g=Graphics.FromImage(bt);//实例化Graphics对象 Penp=newPen(Color.Black,1);//设置Pen对象 g.DrawLine(p,newPoint(0,0),newPoint(0,panel1.Height-20));//绘制Y轴 g.DrawLine(p,newPoint(0,panel1.Height-20),newPoint(panel1.Width-4,panel1.Height-20));//绘制X轴 //声明一个用于绘制颜色的数组 Color[]cl=newColor[]{Color.Red,Color.Blue,Color.YellowGreen,Color.Yellow,Color.RoyalBlue,Color.Violet,Color.Tomato}; int[]points={20,70,80,60,40,100,10};//声明一个计算走势峰值的数组 Pointpt1=newPoint(0,panel1.Height-20-points[0]);//记录绘制四边形的第一个点 Pointpt2=newPoint(0,panel1.Height-20);//记录绘制四边形的第二个点 for(inti=0;i<=6;i++)//通过for循环绘制月份和面形图 { PointFp1=newPointF(flag*i,panel1.Height-20);//计算每个月份数字的坐标 //绘制显示月份的数字 g.DrawString(i.ToString(),newFont("宋体",9),newSolidBrush(Color.Black),newPointF(p1.X-2,p1.Y)); //记录绘制四边形的第三个点 Pointpt3=newPoint(flag*i,panel1.Height-20); //记录绘制四边形的第四个点 Pointpt4=newPoint(flag*i,panel1.Height-20-points[i]); Point[]pt={pt1,pt2,pt3,pt4};//声明一个Point数组 g.FillPolygon(newSolidBrush(cl[i]),pt);//填充四边形的颜色 //当继续绘制下一个四边形时,前一个四边形的最后两个点作为下一个四边形的起始点 pt1=pt4; pt2=pt3; } panel1.BackgroundImage=bt;//显示绘制的面形图 } privatevoidForm1_Load(objectsender,EventArgse) { } } }
面形图是平时很普及的一种图表风格,用来显示数据挺方便的。合理的加以应用相信会对程序数据展现的视觉效果有很大的提高!