0

と呼ばれるチャートコントロールを含むwinformsアプリケーションがあります

comparisonChart

マウスホイール イベントをサブスクライブし、次の操作を行うことで、グラフ コントロールにズーム機能を実装しました。

private void comparisonChartMouseWheel(object sender, MouseEventArgs e)
    {
        if (e.Delta < 0)
        {
            this.comparisonChart.ChartAreas[0].AxisX.ScaleView.ZoomReset(0);
            this.comparisonChart.ChartAreas[0].AxisY.ScaleView.ZoomReset(0);
        }
        else if (e.Delta > 0)
        {
            double xMin = this.comparisonChart.ChartAreas[0].AxisX.ScaleView.ViewMinimum;
            double xMax = this.comparisonChart.ChartAreas[0].AxisX.ScaleView.ViewMaximum;
            double yMin = this.comparisonChart.ChartAreas[0].AxisY.ScaleView.ViewMinimum;
            double yMax = this.comparisonChart.ChartAreas[0].AxisY.ScaleView.ViewMaximum;
            double posXStart = this.comparisonChart.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) - (xMax - xMin) / 4;
            double posXFinish = this.comparisonChart.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + (xMax - xMin) / 4;
            double posYStart = this.comparisonChart.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) - (yMax - yMin) / 4;
            double posYFinish = this.comparisonChart.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + (yMax - yMin) / 4;
            this.comparisonChart.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart, posXFinish);
            this.comparisonChart.ChartAreas[0].AxisY.ScaleView.Zoom(posXStart, posXFinish);
        }

    }

グラフを拡大すると、X 軸の値が 10 進数で表示されます。

小数値を削除するために、次のことも行いました。

comparisonChart.Series[0].XValueType = ChartValueType.Int32;

しかし、ズームインすると小数値が表示されます。

4

1 に答える 1