栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

C# Chart控件实现柱形图和折线图在一个chart上同时显示,并显示滚动条

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C# Chart控件实现柱形图和折线图在一个chart上同时显示,并显示滚动条

效果如下:左侧纵坐标表示柱形图Y轴数据,右侧纵坐标表示折线图Y轴数据

代码:

private void ButtonClickSelect()
        {
            string GD = textBoxGD.Text.Trim();
            string XH = textBoxXH.Text.Trim();
            string CJ = comboBoxCJ.Text.Trim();

            string Date1 = dateTimePicker1.Value.ToString("yyyyMMdd HH:mm:ss");
            string Date2 = dateTimePicker2.Value.ToString("yyyyMMdd HH:mm:ss");

            DataTable dt = BLL.MES.GetNGBoLaTuP1(GD, XH, CJ, Date1, Date2);

            if (dt != null && dt.Rows.Count > 0)
            {
                string ID_UNIQUE = BLL.Config.GetNewID();
                dt.Columns.Add("BLL");
                dt.Columns.Add("ID");
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    dt.Rows[i]["BLL"] = (Math.Round(decimal.Parse(dt.Rows[i]["NGQty"].ToString()) / decimal.Parse(dt.Rows[i]["TR"].ToString()), 2) * 100).ToString() + "%";
                    dt.Rows[i]["ID"] = ID_UNIQUE;                    
                }
                bool flag = Util.DBHelper.AddTable(dt, "NGBoLaTuTempSave");

                if (flag)
                {
                    chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false;
                    chart1.ChartAreas["ChartArea1"].Area3DStyle.LightStyle = LightStyle.Realistic;
                    chart1.ChartAreas["ChartArea1"].BackColor = System.Drawing.Color.FromArgb(((System.Byte)(64)), ((System.Byte)(165)), ((System.Byte)(191)), ((System.Byte)(228)));
                    chart1.ChartAreas["ChartArea1"].CursorX.AutoScroll = true;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScrollBar.Enabled = true;
                    chart1.ChartAreas["ChartArea1"].CursorX.IsUserEnabled = true;
                    chart1.ChartAreas["ChartArea1"].CursorX.IsUserSelectionEnabled = true;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Zoomable = true;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Position = 1;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Size = 10;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScrollBar.ButtonColor = System.Drawing.Color.Silver;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScrollBar.LineColor = System.Drawing.Color.Black;

                    chart1.ChartAreas[0].AxisX.MajorGrid.LineWidth = 0;
                    chart1.ChartAreas[0].AxisX.Interval = 1; //设置X轴坐标的间隔为1
                    chart1.ChartAreas[0].AxisX.IntervalOffset = 1; //设置X轴坐标偏移为1
                    chart1.ChartAreas[0].AxisX.LabelStyle.IsStaggered = true;                    
                    chart1.ChartAreas[0].BackColor = Color.White;//设置背景为白色
                    //chart1.ChartAreas[0].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.All;//启用X轴滚动条按钮

                    dt = BLL.MES.GetNGBoLaTuTempSaveData(ID_UNIQUE);
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        chart1.Series[0].Points.Clear();                        
                        chart1.Series[0].IsValueShownAsLabel = true;//显示标签
                        
                        for (int m = 0; m < dt.Rows.Count; m++)
                        {
                            for (int n = 0; n < dt.Columns.Count; n++)
                            {
                                chart1.Series[0].Points.AddXY(dt.Columns[n].ColumnName, dt.Rows[m][n].ToString());
                            }
                        }
                    }

                    dt = BLL.MES.GetNGBoLaTu2TempSaveData(ID_UNIQUE);
                    if (dt != null && dt.Rows.Count > 0)
                    {
                        chart1.Series[1].Points.Clear();
                        chart1.Series[1].IsValueShownAsLabel = true;//显示标签
                        chart1.Series[1].MarkerStyle = MarkerStyle.Circle;   //线条上的数据点标志类型
                        chart1.Series[1].MarkerSize = 8;  //标志大小
                        // 宽度
                        chart1.Series[1].BorderWidth = 2;
                        // 线条颜色
                        chart1.Series[1].Color = Color.Red;
                        //数据点颜色
                        chart1.Series[1].MarkerColor = Color.BlueViolet;
                        chart1.Series[1].Label = "#VAL{P}";//设置标签文本 (在设计期通过属性窗口编辑更直观)
                        chart1.ChartAreas[0].AxisY2.LabelStyle.Format = "0.00%";
                        
                        for (int m = 0; m < dt.Rows.Count; m++)
                        {
                            for (int n = 0; n < dt.Columns.Count; n++)
                            {
                                chart1.Series[1].Points.AddXY(dt.Columns[n].ColumnName, double.Parse(dt.Rows[m][n].ToString().Trim('%'))*0.01);
                            }
                        }
                    }


                    //查询完成之后,删除临时表数据
                    string sql = "";
                    List paras = new List();
                    sql = "delete NGBoLaTuTempSave where ID = @ID";
                    paras = new List() { 
                        new SqlParameter("@ID",ID_UNIQUE),
                        };
                    string str = Util.DBHelper.Action(sql, paras);
                    
                    str = Util.DBHelper.Action(sql, paras);


                }

            }
        }

1、以下代码是显示横坐标滚动条

chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false;
                    chart1.ChartAreas["ChartArea1"].Area3DStyle.LightStyle = LightStyle.Realistic;
                    chart1.ChartAreas["ChartArea1"].BackColor = System.Drawing.Color.FromArgb(((System.Byte)(64)), ((System.Byte)(165)), ((System.Byte)(191)), ((System.Byte)(228)));
                    chart1.ChartAreas["ChartArea1"].CursorX.AutoScroll = true;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScrollBar.Enabled = true;
                    chart1.ChartAreas["ChartArea1"].CursorX.IsUserEnabled = true;
                    chart1.ChartAreas["ChartArea1"].CursorX.IsUserSelectionEnabled = true;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Zoomable = true;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Position = 1;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Size = 10;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScrollBar.ButtonColor = System.Drawing.Color.Silver;
                    chart1.ChartAreas["ChartArea1"].AxisX.ScrollBar.LineColor = System.Drawing.Color.Black;

2、这是设置第二条折线的纵坐标以百分号形式显示

chart1.ChartAreas[0].AxisY2.LabelStyle.Format = "0.00%";

3、chart1.Series[0]表示第一条曲线,chart1.Series[1]表示第二条曲线

4、如何设置纵坐标显示在右侧,如下图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/908051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号