0

我仍然对 C# Chart 有问题(在 System.Windows.Forms.DataVisualization.Charting 命名空间中)。当我放大 Y 轴时,有时不会重绘间隔线。看下图,0下缺少区间线。缺少区间线

通常没有问题,画出11条区间线。

        private void chart1_AxisViewChanged(object sender, ViewEventArgs e)
    {
        if ((e != null) && (sender != null))
        {
            // on ne récupère que les évènement concernant l'axe Y. L'axe X se gère tout seul car il est unique
            if (e.Axis.AxisName.ToString() == "Y")
            {
                // AxisY.ScaleView.ViewMinimum is the minimum Y axis value displayed. It contains the offset to apply to label, grid and interval on Y axis
                e.ChartArea.AxisY.IntervalOffset = (e.ChartArea.AxisY.Interval - e.ChartArea.AxisY.ScaleView.ViewMinimum) % e.ChartArea.AxisY.Interval;

                // To update Y axis label, major grid and interval. 
                e.ChartArea.AxisY.Interval = (e.ChartArea.AxisY.ScaleView.ViewMaximum - e.ChartArea.AxisY.ScaleView.ViewMinimum) / 11;

            }
        }
    }

以上是我的axisViewChanged 事件。

Y轴声明如下

chartArea1.AxisY.Interval = (sens.dMaximumValue - sens.dMinimumValue)/11.0;
        chartArea1.AxisY.IntervalOffsetType = DateTimeIntervalType.Number;
        chartArea1.AxisY.IntervalType = DateTimeIntervalType.Number;
        chartArea1.AxisY.LabelStyle.Format = ".000";
        chartArea1.AxisY.MajorGrid.LineColor = Color.White; // Color.DarkViolet;
        chartArea1.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
        chartArea1.AxisY.MajorTickMark.Enabled = false;
        chartArea1.AxisY.Maximum = sens.dMaximumValue*1.1;
        chartArea1.AxisY.Minimum = sens.dMinimumValue*1.1;
        chartArea1.AxisY.ScaleView.MinSize = 0.01D;
        chartArea1.AxisY.ScaleView.SmallScrollMinSize = 0.001D;
        chartArea1.AxisY.ScrollBar.BackColor = Color.White;
        chartArea1.AxisY.ScrollBar.ButtonColor = Color.LightGray;

如您所见,它被声明为数字,我认为这是正确的。

出现此问题时,如果我单击滚动条,则会正确重绘 11 间隔。

有什么解决了这个问题吗?

4

0 回答 0