【发布时间】:2019-04-14 06:34:24
【问题描述】:
如何从一个点缩放 例如从 300 点缩放到 500 轴 X 和 50 到 100 轴 AxisY 一步一步
当前位置
private void chart1_MouseClick(object sender, MouseEventArgs e) {
lastPoint = e.Location;
}
缩放 X 和 Y
private void btnZoomXY_Click(object sender, EventArgs e)
{
step = (int)(chart1.ChartAreas["ChartArea1"].AxisX.Maximum - lastPoint.X ) / 20;
if (zoomx > chart1.ChartAreas["ChartArea1"].AxisX.Maximum)
{
zoomx -= step;
}
else
zoomx += step;
this.chart1.ChartAreas["ChartArea1"].AxisX.ScaleView.Zoom(lastPoint.X+ zoomx, this.chart1.ChartAreas["ChartArea1"].AxisX.Maximum - zoomx);
if (Mode == SpectometrMode.Absorbance)
{
step1 = 0.2f;
}
else
step1 = (int)(chart1.ChartAreas["ChartArea1"].AxisY.Maximum - lastPoint.Y) / 20;
if (zoomY > chart1.ChartAreas["ChartArea1"].AxisY.Maximum)
{
zoomY -= step1;
}
else
zoomY += step1;
this.chart1.ChartAreas["ChartArea1"].AxisY.ScaleView.Zoom(lastPoint.Y+ zoomY, this.chart1.ChartAreas["ChartArea1"].AxisY.Maximum - zoomY);
chart1.ChartAreas[0].AxisX.LabelStyle.Format = "{0}";
}
@taW
【问题讨论】:
-
呵呵,这种Ping不行。您需要 a) 知道当前的缩放中心和您的步数。然后代码应该可以工作。始终将中心保持在zoom start and -end 之间的中间。如果中心位于 x=400 并且当前缩放位于 xstart= 100,则您的 xdelta=300。对于 step=100,您可以缩放到
(origin-i*step, origin+i*step) -
@TaW 我的步骤不同我在代码中有 3 种模式。通过鼠标单击显示当前缩放中心。请帮我写这段代码。谢谢
-
我稍后再看看..
-
我发现代码有点混乱。我的答案解决了错误坐标的主要问题,并显示了一个简单的缩放方案。根据需要进行调整..!