我在我的应用程序中使用 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);
有用。但是我将如何清除选择呢?
谢谢马丁