加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C# chart控件绘制多图表区图像

(2011-04-05 00:43:21)
标签:

c

chart控件

绘图区域大小

位置

多个绘图区域

横向分布

杂谈

分类: coding
想要根据数据库中记录个数动态决定chart控件的绘图区域,保证它们大小均匀,在网上找了N久么有发现满意答案,纠结了快一天的时间,终于把问题解决了,贴出来供大家分享O(∩_∩)O~
前面的代码中定义一个series对象数组:
 List<Series> listSer = new List<Series>();
引发动态生成图表的按钮事件完整如下:
private void button1_Click(object sender, EventArgs e)
        {
            OCon Mycon = new OCon();
            OracleConnection conn = Mycon.getCon();
            conn.Open();
            string sqlString = "select count(*) from dotrelation where dotdesc like '2%路基%温度%'";
            num = Mycon.countORL(conn, sqlString);//获得数据库中满足条件的记录数
            //MessageBox.Show("满足条件的数据记录为" + num);
            int heightPer = 100 / num;//计算每个绘图区高度

            for (int i = 0; i < num; i++)
            {

                string serName = "test" + i.ToString();

                listSer.Add(new Series(serName));//对象数组

                fillData(date);//初始化数组此方法自己定义的
                initialSeries((Series)listSer[i], Color.Red, date);

                chart1.ChartAreas.Add("ANOTHER" + i);
//这里是关键!!!!!
                chart1.ChartAreas[i].Position.Width = 100;//绘图区域在控件中的宽度 100是百分比
                chart1.ChartAreas[i].Position.Height = heightPer;
                chart1.ChartAreas[i].Position.X = 5;//绘图区域在控件中的绝对位置 横坐标
                chart1.ChartAreas[i].Position.Y = 3 + heightPer * i;//绘图区域在控件中的绝对位置纵坐标
                



                chart1.ChartAreas[i].AxisX.LineColor = Color.Blue;
                chart1.ChartAreas[i].AxisY.LineColor = Color.Blue;
                chart1.ChartAreas[i].AxisX.LineWidth = 2;
                chart1.ChartAreas[i].AxisY.LineWidth = 2;
                chart1.ChartAreas[i].AxisY.Title = "监测值";
                //设置网格线   
                chart1.ChartAreas[i].AxisX.MajorGrid.LineColor = Color.Blue;
                chart1.ChartAreas[i].AxisX.MajorGrid.Interval = 2;//网格间隔
                chart1.ChartAreas[i].AxisX.MinorGrid.Interval = 2;
                chart1.ChartAreas[i].AxisY.MajorGrid.LineColor = Color.Blue;
                chart1.ChartAreas[i].AxisY.MajorGrid.Interval = 2;
                chart1.ChartAreas[i].AxisY.MinorGrid.Interval = 2;
               

                chart1.Series[i].IsValueShownAsLabel = false;             //是否显示数据       
                chart1.Series[i].IsVisibleInLegend = false;              //是否显示数据说明   
                chart1.Series[i].MarkerStyle = MarkerStyle.Circle;        //线条上的数据点标志类型   
                chart1.Series[i].MarkerSize = 3;                          //标志大小   
                chart1.Series[i].ChartType = SeriesChartType.Line;      //图表类型为曲线
                string name = "ANOTHER" + i.ToString();
                chart1.Series[i].ChartArea = name;//指定绘图区域
             

                chart1.ChartAreas[i].AxisX.LineColor = Color.Blue;            //X轴颜色   
                chart1.ChartAreas[i].AxisY.LineColor = Color.Blue;            //Y轴颜色   
                chart1.ChartAreas[i].AxisX.LineWidth = 2;                     //X轴宽度   
                chart1.ChartAreas[i].AxisY.LineWidth = 2;                      //Y轴宽度   
                chart1.ChartAreas[i].AxisY.Title = "人数"; //Y轴标题 

            }


            //fillData(date);//初始化数组
            //initialSeries(series1, Color.Red, date);
            initalChart();//图表初始化
        }


遗憾的一点是本来想横向分布,水平布局的,最后没试,估计同样的设置方法(绘图区域宽度、高度,绝对位置设置)应该可以~

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有