我使用这个控件在web网页中,自己在家里练习在winform里使用,winform里更直观跟简洁,用法差不太多
一、下载dll ,打包后有两个文件夹(注意:zedgraph_dll_v4.6.4是针对vs2003的,zedgraph_dll_v5.1.4是针对vs2005,至于2008,自己未知。也可以看readme.txt,里面有说哪个版本适合哪个,自己也不知道是不是最新版本的dll,但是一般作图就够了)
二、在工具箱里,添加新项-->选项卡-->浏览-->选择ZedGraph.Web.dll(web中使用)、ZedGraph.dll(winform中使用),看到控件在工具箱里了应该。如果添加成功之后没有看到,工具箱右键-->全部显示-->可以看见的话,那么一定是在web里引用的是winform的dll 了 ,删除重新添加。
三、在网站的bin目录下添加对两个dll的引用(不知道为什么一定是两个,总之拖控件到页面上如果少个dll就报错)
四、新建页面,布局,拖个控件到页面上,设置属性(我只用到长高这些属性,其他都是代码里设置滴),RenderImagePath是生成的图片所在的位置,需要在对应的目录下建对应的文件夹,要不也生成不过去。
五、页面后台代码:图形对应的数据都是放到pointpairlist中的,所以获得的DataSet要转换到PointPairList,如下:
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
DataTable dt=ds.Tables[0];
XDate xd;
for (int i = 0; i < dt.Rows.Count; i++)
{
xd = new XDate(DateTime.Parse(dt.Rows[i][0].ToString()));//日期
lineBookOrder.Add((double)xd, Convert.ToDouble(dt.Rows[i][1]));//lineBookOrder是定义好的pointpairlist,里面都要转化成double类型的
}
}
我是在buttonclick之后获得数据显示图形,所以上述代码在click事件中,除了这以外,还要 this.ZedGraphWebBookOrder.AxisChanged = true;告诉控件开始画图
六、点击zedweb控件(你拖进来的那个),属性-->事件-->RenderGraph事件,双击,在里面写代码,主要是属性的设计和绑定数据和控件,生成曲线等
(这个是和winform有多区别的地方,winform那个还没整明白)
protected void ZedGraphWeb1_RenderGraph(ZedGraphWeb webObject, Graphics g, MasterPane pane)
{
GraphPane myPane = pane[0];
myPane.Title.Text = "预订订单 数量-日期折线图";
myPane.XAxis.Title.Text = "日期";
myPane.YAxis.Title.Text = "数量";
myPane.XAxis.Type = AxisType.Date;
myPane.XAxis.Scale.Format = "MM-dd";
LineItem myCurve = myPane.AddCurve("预订订单数", lineBookOrder, Color.Red, SymbolType.Diamond);
//BarItem myCurve = myPane.AddBar("实住订单数", lineEffectiveOrder, Color.Red);
//AddCurve是生成折线或曲线图,对应的曲线类型是LineItem;AddBar:柱状图,对应的图形BarItem ,还有饼图、线图等等
}
一个粗略的图形就完成了,如果你想再让图形精确些,漂亮些,就多研究一下属性,虽然都是英文但都是不难,实践一下就都明了了。
目前,遗留的问题是不能显示点的值,像Excel中的那种,鼠标放上会显示y值,有好的建议请提示一下。