问题描述
我在我的项目中使用 Microsoft Chart 控件,我想通过使用鼠标滚轮在 Chart Control 中启用缩放功能。我找到了以下解决方案:
how to enable zooming in Microsoft chart control by using Mouse wheel
private class ZoomFrame
{
public double XStart { get; set; }
public double XFinish { get; set; }
public double YStart { get; set; }
public double YFinish { get; set; }
}
private readonly Stack<ZoomFrame> _zoomFrames = new Stack<ZoomFrame>();
private void chart1_MouseWheel(object sender,MouseEventArgs e)
{
var chart = (Chart)sender;
var xAxis = chart.ChartAreas[0].AxisX;
var yAxis = chart.ChartAreas[0].AxisY;
try
{
if (e.Delta < 0)
{
if (0 < _zoomFrames.Count)
{
var frame = _zoomFrames.Pop();
if (_zoomFrames.Count == 0)
{
xAxis.ScaleView.Zoomreset();
yAxis.ScaleView.Zoomreset();
}
else
{
xAxis.ScaleView.Zoom(frame.XStart,frame.XFinish);
yAxis.ScaleView.Zoom(frame.YStart,frame.YFinish);
}
}
}
else if (e.Delta > 0)
{
var xMin = xAxis.ScaleView.ViewMinimum;
var xMax = xAxis.ScaleView.ViewMaximum;
var yMin = yAxis.ScaleView.ViewMinimum;
var yMax = yAxis.ScaleView.ViewMaximum;
_zoomFrames.Push(new ZoomFrame { XStart = xMin,XFinish = xMax,YStart = yMin,YFinish = yMax });
var posXStart = xAxis.PixelPositionTovalue(e.Location.X) - (xMax - xMin) / 4;
var posXFinish = xAxis.PixelPositionTovalue(e.Location.X) + (xMax - xMin) / 4;
var posYStart = yAxis.PixelPositionTovalue(e.Location.Y) - (yMax - yMin) / 4;
var posYFinish = yAxis.PixelPositionTovalue(e.Location.Y) + (yMax - yMin) / 4;
xAxis.ScaleView.Zoom(posXStart,posXFinish);
yAxis.ScaleView.Zoom(posYStart,posYFinish);
}
}
catch { }
}
但是,在缩放时显示图表时会出现问题,图表值显示在 X 值栏中并显示在标签顶部。有什么可以阻止在这些标签内绘制图表的吗?
Image with issue within the chart
问候,
简·威廉
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)