0

我在我的应用程序中使用 MSChartControl。在图表控件中,我显示了一个图像,我想使用图表控件的选择机制从 ChartArea 中使用 CursorX 选择图像范围。

在 SelectionRangeChanged 事件中,我想在用户完成选择时得到通知,然后我想为尚未选择的区域着色并隐藏原始选择。

由于没有 ClearSelection (至少我还没有找到这样的方法),我将选择设置为 Cursor 在没有选择时最初具有的值:

private void chartTopoAP_SelectionRangeChanged(object sender, CursorEventArgs e)
{
    int Start = (int)e.NewSelectionStart;
    int End = (int)e.NewSelectionEnd;

    MathUtil.SwapIf(Start > End, ref Start, ref End);

    mySelectedRange = new Tuple<int, int>(Start, End);

    chartTopoAP.ChartAreas[0].CursorX.SetSelectionPosition(double.NaN, double.NaN);
    chartTopoAP.Invalidate();
    chartTopoAP.Update();
}

在绘画方法中,我自己绘画。

除非我调整窗口和图表控件的大小,否则这似乎可行。

1)我启动窗口,然后选择一些东西 2)我调整图表控件的大小(更大/更小无关紧要) 3)我做另一个选择

-> 结果是,显然控件在内部缓冲了一些图形,并向我显示了我在调整控件大小之前的大小的图表。

如果我注释掉该行

chartTopoAP.ChartAreas[0].CursorX.SetSelectionPosition(double.NaN, double.NaN);

有用。但是我将如何清除选择呢?

谢谢马丁

4

1 回答 1

1

它似乎与 scaleview 缩放设置有关。如果你添加

chartTopoAP.ChartAreas[0].AxisX.ScaleView.ZoomReset();

重置选择后,症状消失。

于 2011-08-04T08:29:18.467 回答