前一段时间需要用C#的winform开发一个超声仪器的软件,主要的问题是绘制扫描的窗体,初步的思路是采用chart控件实现,思路为建立两个重叠的ChartArea,一个用于绘制超声波形,另一个用于绘制闸门,最后完成的结果如下图:
其中曲线的X轴与Y轴范围可以随轨迹条实时变化,从而实现超声软件调节增益的功能。而闸门主要是用于参考,其形状不会随增益的调节而变化。
在添加两个chartArea时。出现了如下问题:
在用属性编辑器添加两个chartArea时,图窗布局如下图
绘图区域只占据了窗口的一半,对chartArea中的Position和InnerPlotPosition中进行修改,依然没有解决问题,代码如下:
//
// chart1
//
chartArea5.InnerPlotPosition.Auto = false;
chartArea5.InnerPlotPosition.Height = 100F;
chartArea5.InnerPlotPosition.Width = 100F;
chartArea5.Name = "ChartArea1";
chartArea5.Position.Auto = false;
chartArea5.Position.Height = 100F;
chartArea5.Position.Width = 100F;
chartArea6.BackColor = System.Drawing.Color.Transparent;
chartArea6.InnerPlotPosition.Auto = false;
chartArea6.InnerPlotPosition.Height = 100F;
chartArea6.InnerPlotPosition.Width = 100F;
chartArea6.Name = "ChartArea2";
chartArea6.Position.Auto = false;
chartArea6.Position.Height = 100F;
chartArea6.Position.Width = 100F;
this.chart1.ChartAreas.Add(chartArea5);
this.chart1.ChartAreas.Add(chartArea6);
this.chart1.Location = new System.Drawing.Point(35, 41);
this.chart1.Name = "chart1";
series7.ChartArea = "ChartArea1";
series7.Name = "Series1";
series8.ChartArea = "ChartArea2";
series8.Name = "Series2";
series9.ChartArea = "ChartArea2";
series9.Name = "Series3";
this.chart1.Series.Add(series7);
this.chart1.Series.Add(series8);
this.chart1.Series.Add(series9);
this.chart1.Size = new System.Drawing.Size(915, 625);
this.chart1.TabIndex = 0;
this.chart1.Text = "chart1";
title3.Name = "title1";
this.chart1.Titles.Add(title3);
出现了代码与显示不一致的问题,便考虑到是代码生成器的某些自动属性出现了问题,删除所有的ChartArea,并重新添加一个ChartArea,显示恢复正常:
推算应该是代码生成器的某些自动属性出现了问题,于是解决方案如下:先删除所有的ChartArea,只添加一个ChartArea,这时界面显示正常,然后关闭Position和InnerPlotPosition中的AUTO属性
之后再添加另一个ChartArea,这样新添加CharArea的Auto属性会自动被设置为False,就不会出现空白,界面显示正常。这样就可以按照输入的数值去布局画布了