在c#中移动缩放图表

时间:2018-01-01 21:04:01

标签: c# charts mschart

我使用以下代码创建图表

chart1.Series[0].ChartType = SeriesChartType.Line;
chart1.DataSource = dict;
chart1.Series[0].XValueMember = "Key";
chart1.Series[0].YValueMembers = "Value";
chart1.Series[0].IsVisibleInLegend = false;

chart1.ChartAreas[0].AxisX.MajorGrid.LineWidth = 0;
chart1.ChartAreas[0].AxisY.MajorGrid.LineWidth = 0;
chart1.ChartAreas[0].AxisX.LabelStyle.Format = "0.00";
chart1.ChartAreas[0].AxisY.LabelStyle.Format = "0.00";

chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
chart1.ChartAreas[0].AxisY.ScaleView.Zoomable = true;

chart1.Refresh();

以下代码用滚动

放大图表
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) - (xMax - xMin) / 4;
double posXFinish = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + (xMax - xMin) / 4;
double posYStart = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) - (yMax - yMin) / 4;
double posYFinish = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + (yMax - yMin) / 4;

chart1.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart, posXFinish);
chart1.ChartAreas[0].AxisY.ScaleView.Zoom(posYStart, posYFinish);

我试图在按住左键的同时用鼠标移动缩放图表。

1 个答案:

答案 0 :(得分:0)

听起来你正在尝试使用平移。不幸的是,MSCharts并不是很简单。

简单的答案是使用滚动条左右或上下平移。确保轴ScaleView.Scroll方法设置为正确的值(可能是1),否则每次点击它都会疯狂,具体取决于它的设置。

答案很简单,MSChart Extension,有人为MS Chart开发了一个很好的平移和缩放控制,所有源代码都可以在那里找到。坏消息是你必须深入挖掘代码以找到你想要和不想要的东西,但这是一个很好的控制。