.net WinForm下从datagridview中取值,通过Zedgraph作折线图

来源:互联网 发布:质量管理矩阵图模版 编辑:程序博客网 时间:2024/06/15 10:14

        本文介绍了.net框架下Winform中从datagridview中直接取数据,用Zedgraph作图的方法。

        首先,需要下载Zedgraph,让我们的.NET可以使用这个控件,有三种方法:

作为用户控件使用ZedGraph【转】

可以在Visual Studio .NET的工具箱中添加ZedGraph控件。首先,打开Visual Studio .NET,新建一个Windows项目,打开窗体设计器显示当前窗口。要查看工具箱,使用主菜单的视图-工具箱命令。
右键单击工具箱上的“我的用户控件”或“组件”栏,然后选择“添加/删除项”选项。点击“浏览”,选取“ZedGraph.dll ”文件。一旦文件添加了,你可以看到一个ZedGraphControl选项在工具栏中。将它拖到窗体设计器中,拉伸到合适大小。这样就在你的窗体中创建了一个ZedGraph控件。这个控件具备了ZedGraph控件的所有功能。一个ZedGraph控件就这样简单的创建了,他带有一个初始的图形窗格(又想不到词...)。ZedGraph.dll文件可以作为用户控件或组件。

作为组件使用ZedGraph【转】

在你的项目中添加组件,步骤如下:

1.在项目中,选择项目菜单下的“添加”选项。通过浏览按扭找到ZedGraph.dll,点击OK。这将使你的项目包含了ZedGraph的所有功能。

2.在主窗体代码中添加使用ZedGraph的代码.

作为Web控件使用ZedGraph【转】

ZedGraph现在具有一个可以应用到ASPX的Web控件类。提供下载演示项目示范了这个功能。要使用Web控件,你的页面必须包含以下图片:
<img src="graph1.aspx" />

在这个例子中,graph1.aspx是一个声名了这个控件的文件,这个声明要包含一个叫做“graph1.aspx.cs ”的后台代码文件,这个文件实际上负责绘制图形。所以,ZedGraph.dll文件必须未于和graph1.aspx同级的"bin"目录下。

好了,现在我们来作图:

其中,datagridview中的第一列作为X轴的值,第二列和第三列分别作为Y轴的值做两条曲线。

将Zedgraph从工具箱拖出来之后,建立一个函数:

public static void DrawZedgraphColumn2(DataGridView DGV,ZedGragphControl ZGC)

{

      ZGC.GrapghPhane.CurveList.Clear();

      //datagridview第一列的列头,作为X轴的名

      String XStr=DGV.Columns[0].HeaderText;

      //datagridview第二列的列头,作为Y1轴的名

      String Y1Str=DGV.Columns[1].HeaderText;

      //如果要画两条曲线,且这两条曲线的纵坐标差别比较大,那么可以再加上一个Y轴

      String Y2Str=DGV.Columns[2].HeaderText;


     //初始化ZedGraph

       GraphPane MyPhane=ZGC.GraphPane;

     //图表标题

      MyPhane.Title.Text="XXXX";

     //X轴标题

     MyPhane.XAxis.Title.Text=XStr;

     //Y1轴标题

      MyPhane.YAxis.Title.Text=Y1Str;

     //Y2轴标题

     MyPhane.Y2Axis.Title.Text=Y2Str;


     //新建三个数组,分别用于存放DGV中三列的值,作为Zedgraph中X轴的值和Y轴的值

     String[] X= new string[DGV.Rows.Count];

     String[] Y1= new string[DGV.Rows.Count];

     String[] Y2= new string[DGV.Rows.Count];

     for(int i=0;i<DGV.Rows.Count;i++)

     X[i]=DGV.Rows[i].Cells[0].Value.ToString();

     Y1[i]=DGV.Rows[i].Cells[1].Value.ToString();

     Y2[i]=DGV.Rows[i].Cells[2].Value.ToString();

      

      //绘图,为MyPhane添加一条曲线MyCurve

      LineItem Mycurve=MyPhane.AddCurve(Y1Str,null,y1,Color.Red,Symbol.Diamond);

      MyCurve.Line.IsSmooth=false; //绘制曲线平滑不平滑

      MyCurve.Symbol.Fill=new Fill(Color.Red); //填充符号点

      //增加一条曲线

      MyCurve=MyPhane.AddCurve(Y2Str,null,y2,Color.Blue,SymbolType.Cirle);

      MyCurve.Line.IsSmooth=false;

      MyCurve.Symbol.Fill=new Fill(Color.Blue);

      //显示Y2轴

      MyCurve.IsY2Axis=true;

     //第一条曲线,绑定Y轴,把坐标Y的颜色改变

      MyPhane.YAxis.Scale.FontSpec.FontColor=Color.Red;

      MyPhane.YAxis.Title.FontSpec.FontColor=Color.Red;

      //第二条曲线,绑定Y2轴,把Y2轴的颜色改变

      MyPhane.Y2Axis.Isvisible=true;

      

      MyPhane.Y2Axis.Scale.FontSpec.FontColor=Color.Blue;

      MyPhane.Y2Axis.Title.FontSpec.FontColor=Color.Blue;

      //图表标注字体大小

      MyPhane.Legend.FontSpec.Size=13;

      //用文本文字数组x[]填充x轴

      MyPhane.XAxis.Type=AxisType.Text;

      MyPhane.XAxis.Scale.TextLables=x;

      //X轴文本竖着显示

      MyPhane.XAxis.Scale.FontSpec.Angle=90;

      //刷新图表

      ZGC.AxisChange();

      ZGC.Refresh();

     

}

原创粉丝点击