Chart用法详解 偏执的太偏执、 2022-12-27 12:43 116阅读 0赞 实际的开发过程中chart是可以自己使用gdi来自己画的,但是处理特殊情况可能还是不如系统自带的控件。花了一天的时间研究了一下chart。把一些基本的功能算是研究明白了,主要是折线的显示,用于数据分析,增加参考线,超警戒线区分显示,离散点/点线连接基本满足需要了。 上硬菜(想用的可以修改一下使用,勿喷): Chart主要属性: ChartArea:在容器内创建多个Chart表 Series:设置多组数据的显示(比如一个Chart里面可以出现多条折线) Title:设置Chart的标题属性 Legends:设置每组数据的标签属性 效果图: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NkYzg1OTY_size_16_color_FFFFFF_t_70][] 建立一个Form窗体,在Series属性里面增加三个Series //创建数据 private DataTable CreateDataTable() { DataTable dt=new DataTable(); dt.Columns.Add("date"); dt.Columns.Add("Volume1"); dt.Columns.Add("Volume2"); dt.Columns.Add("Volume3"); DataRow dr; dr=dt.NewRow(); dr["date"]="Jans"; dr["Volume1"]=10000; dr["Volume2"]=4101; dr["Volume3"]=101; dt.Rows.Add(dr); dr=dt.NewRow(); dr["date"]="Feb"; dr["Volume1"]=20000; dr["Volume2"]=4101; dr["Volume3"]=1101; dt.Rows.Add(dr); dr=dt.NewRow(); dr["date"]="Mar"; dr["Volume1"]=10000; dr["Volume2"]=7101; dr["Volume3"]=2101; dt.Rows.Add(dr); dr=dt.NewRow(); dr["date"]="Apr"; dr["Volume1"]=20000; dr["Volume2"]=6101; dr["Volume3"]=3101; dt.Rows.Add(dr); dr=dt.NewRow(); dr["date"]="May"; dr["Volume1"]=10000; dr["Volume2"]=7101; dr["Volume3"]=5101; dt.Rows.Add(dr); dr=dt.NewRow(); dr["date"]="Jun"; dr["Volume1"]=20000; dr["Volume2"]=8101; dr["Volume3"]=1101; dt.Rows.Add(dr); return dt; } private void Form1_Load(object sender,EventArgs e) { DataTable dt=new DataTable (); dt=CreateDataTable (); //设置Chart的数据源 chart1.DataSource=dt; //设置图标Y轴的对应项 chart1.Series[0].YValueMembers="Volume1"; chart1.Series[1].YValueMembers="Volume2"; chart1.Series[2].YValueMembers="Volume3"; //设置X轴的对应项 chart1.Series[1].XValueMember="date"; //绑定数据 chart1.DataBind(); //设置网格的颜色 chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineColor=Color.LightGreen; chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineColor=Color.LightBlue; //绘制警戒线 StripLine stripLine=new StripLine(); stripLine.Interval=0; stripLine.IntervalOffset=18000.0; stripLine.StripWidth=1; stripLine.BackColor=Color.Red; stripLine.BorderDashStyle=ChartDashStyle.Dash; stripLine.Text="警戒线标识"; chart1.ChartAreas["ChartArea1"].AxisY.StripLines.Add(stripLine); #region 先设置为散点法显示(超出警戒线的点显示为红色,如果散点显示则使用这种判断方式) // foreach(DataPoint point in chart1.Serier[0].Points) //{ // if(point.YValues[0]>15000) // point.Color=Color.Red; //} #endregion #region 先设置为折线显示(然后设置折线拐点的大小与Style) //设置线条的粗细 chart1.Series[0].BorderWidth=2; //标记显示点的颜色 chart1.Series[0].MarkerBorderColor=Color.Blue; //设置点的边框粗细 chart1.Series[0].MarkerBorderWidth=2; //设置点的中心颜色 chart1.Series[0].MarkerColor=Color.White; //设置点的大小 chart1.Series[0].MarkerSize=8; //设置点的类型 chart1.Series[0].MarkerStyle=MarkerStyle.Circle; //将超限的点修改为红色区分显示 foreach(DataPoint point in chart1.Series[0].Points) { //鼠标悬停显示数据 point.ToolTip=point.YValues[0].ToString(); if(point.YValues[0]>18000) point.MarkerBorderColor=Color.Red; } #endregion } [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NkYzg1OTY_size_16_color_FFFFFF_t_70]: /images/20221120/d316aa8b25d04acaae0c5851f15592e2.png
还没有评论,来说两句吧...