鼠标滚轮缩放c#des在滚动时不调整图表大小

鼠标滚轮缩放c#des在滚动时不调整图表大小,c#,visual-studio,C#,Visual Studio,我正在WinForm的C#中对我的图表进行鼠标滚轮缩放,当我滚动时,图表图像被放大到很大程度,我看不到y轴上的点,有办法解决吗? 这就是代码,我想我必须更改xmin和ymax,但我想不出方法 这是我的密码: private void chart_MouseWheel(object sender, MouseEventArgs e) { try { if (e.Delta < 0) { chart1.ChartAreas

我正在WinForm的C#中对我的图表进行鼠标滚轮缩放,当我滚动时,图表图像被放大到很大程度,我看不到y轴上的点,有办法解决吗?
这就是代码,我想我必须更改
xmin
ymax
,但我想不出方法

这是我的密码:

private void chart_MouseWheel(object sender, MouseEventArgs e)
{
    try
    {
        if (e.Delta < 0)
        {
            chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset();
            chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset();
        }

        if (e.Delta > 0)
        {
            double xMin = chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum;
            double xMax = chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum;
            double yMin = chart1.ChartAreas[0].AxisY.ScaleView.ViewMinimum;
            double yMax = chart1.ChartAreas[0].AxisY.ScaleView.ViewMaximum;

            double posXStart = (chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + xMin)/2;
            double posXFinish = (chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + xMax)/2;
            double posYStart = (chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + yMin)/2;
            double posYFinish = (chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + yMax)/2;

            chart1.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart, posXFinish);
            chart1.ChartAreas[0].AxisY.ScaleView.Zoom(posYStart, posYFinish);
        }
    }
    catch { }
}
private void chart\u鼠标滚轮(对象发送器,MouseEventArgs e)
{
尝试
{
如果(e.Delta<0)
{
chart1.ChartAreas[0]。AxisX.ScaleView.ZoomReset();
chart1.ChartAreas[0]。AxisY.ScaleView.ZoomReset();
}
如果(e.Delta>0)
{
double xMin=chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum;
double xMax=chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum;
double yMin=chart1.ChartAreas[0].AxisY.ScaleView.ViewMinimum;
double yMax=chart1.ChartAreas[0].AxisY.ScaleView.ViewMaximum;
double posXStart=(chart1.ChartAreas[0].axix.PixelPositionToValue(e.Location.X)+xMin)/2;
double posXFinish=(chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X)+xMax)/2;
double posYStart=(chart1.chartreareas[0].AxisY.PixelPositionToValue(e.Location.Y)+yMin)/2;
double posYFinish=(chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y)+yMax)/2;
chart1.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart,posXFinish);
chart1.ChartAreas[0].AxisY.ScaleView.Zoom(posYStart,posYFinish);
}
}
捕获{}
}

我删除了我的旧答案,取而代之的是这个:

posXStart
posXFinish
posYStart
posYFinish
的定义更改为:

double posXStart = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) - (xMax - xMin) / 2.25;
double posXFinish = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + (xMax - xMin) / 2.25;
double posYStart = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) - (yMax - yMin) / 2.25;
double posYFinish = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + (yMax - yMin) / 2.25;
如果你想一想到底发生了什么,你可以修改最后的数字来帮助你获得更好的缩放效果。它可以是2或2.5或4或其他