我已使用此链接Adding a scroll bar to MS Chart control C#将滚动条添加到我的mschart控件的x轴,并且它按预期工作。但现在我的要求是,我需要缩放两个轴。但是,由于我删除了x轴的缩放重置按钮,我使用以下命令通过强制重置它。
private void chart1_AxisScrollBarClicked(object sender, ScrollBarEventArgs e)
{
// Handle zoom reset button
if(e.ButtonType == ScrollBarButtonType.ZoomReset)
{
// Event is handled, no more processing required
e.IsHandled = true;
// Reset zoom on X and Y axis
chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset();
chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset();
}
}
但它无法正常工作。请帮我修好c#..
答案 0 :(得分:3)
首先想到的是,您的问题与多次缩放有关。
正如您所注意到的,默认情况下,缩放重置按钮(与ZoomReset方法完全相同)不会完全重置缩放,但会恢复之前的视图状态,即如果您放大了多次,则会返回只是前一个缩放视图。
要完全重置缩放,您可以使用以下代码:
while (chart1.ChartAreas[0].AxisX.ScaleView.IsZoomed)
chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset();
while (chart1.ChartAreas[0].AxisY.ScaleView.IsZoomed)
chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset();
相反,如果您喜欢默认的缩放重置行为,则两个轴应该有两个按钮,因为不同的轴可能有不同数量的view-statex。
另一种可能性是,您正在缩放辅助轴,例如AxisX2
或AxisY2
(不确定,但我认为这取决于图表类型),因此您应该重置这些(或者,为了安全起见,只需重置所有轴......)。
答案 1 :(得分:3)
尝试使用ZoomReset(0)
。
private void zeroZoom_Click(object sender, EventArgs e)
{
chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset(0);
chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset(0);
}
答案 2 :(得分:0)
我今天尝试使用以下代码,似乎工作正常。这里for循环用滚动处理X轴,下一个if块处理普通的X轴。你能不能一瞥它,让我知道你对它的看法?
private void chart1_AxisScrollBarClicked(object sender, ScrollBarEventArgs e)
{
Boolean blnIsXaxisReset = false;
try
{
// Handle zoom reset button
if(e.ButtonType == ScrollBarButtonType.ZoomReset)
{
// Event is handled, no more processing required
e.IsHandled = true;
// Reset zoom on Y axis
while (chart1.ChartAreas[0].AxisY.ScaleView.IsZoomed)
chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset();
//Handles Zoom reset on X axis with scroll bar
foreach (Series series in chart1.Series)
{
if (series.YAxisType == AxisType.Secondary)
{
chart1.ChartAreas[0].AxisX.ScaleView.Zoom(-10, 10);
blnIsXaxisReset = true;
break;
}
}
//Handles Zoom reset on ordinary X axis
if (blnIsXaxisReset == false)
{
while (chart1.ChartAreas[0].AxisX.ScaleView.IsZoomed)
chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset();
}
}
}
catch (Exception ex)
{
BuildException buildException = new BuildException();
buildException.SystemException = ex;
buildException.CustomMessage = "Error in zooming the Chart";
ExceptionHandler.HandleException(buildException);
}
}
感谢您的努力!!