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)
{
}
}
}
面形图是平时很普及的一种图表风格,用来显示数据挺方便的。合理的加以应用相信会对程序数据展现的视觉效果有很大的提高!