C# chart控件绘制多图表区图像
(2011-04-05 00:43:21)
标签:
cchart控件绘图区域大小位置多个绘图区域横向分布杂谈 |
分类: coding |
想要根据数据库中记录个数动态决定chart控件的绘图区域,保证它们大小均匀,在网上找了N久么有发现满意答案,纠结了快一天的时间,终于把问题解决了,贴出来供大家分享O(∩_∩)O~
List<Series>
listSer = new List<Series>();
前面的代码中定义一个series对象数组:
引发动态生成图表的按钮事件完整如下:
{
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();//图表初始化
}
private void button1_Click(object sender, EventArgs e)
//这里是关键!!!!!
遗憾的一点是本来想横向分布,水平布局的,最后没试,估计同样的设置方法(绘图区域宽度、高度,绝对位置设置)应该可以~