【发布时间】:2011-08-04 06:29:40
【问题描述】:
我在我的应用程序中使用 MSChartControl。在图表控件中,我显示一个图像,我想使用图表控件的选择机制从 ChartArea 中使用 CursorX 选择图像范围。
在 SelectionRangeChanged 事件中,我想在用户完成选择时收到通知,然后我想为尚未选择的区域着色并隐藏原始选择。
由于没有 ClearSelection(至少我还没有找到这样的方法),所以我将选择设置为光标在没有选择时最初具有的值:
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);
它有效。但是我该如何清除选择呢?
谢谢 马丁
【问题讨论】:
标签: .net mschart microsoft-chart-controls