我在我的应用程序中使用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)我做了另一个选择
- &GT;结果是,显然控件已在内部缓冲了一些图形并向我显示了在调整控件大小之前具有的大小的图表。
如果我注释掉该行
chartTopoAP.ChartAreas[0].CursorX.SetSelectionPosition(double.NaN, double.NaN);
它有效。但是,我如何清除选择呢?
由于 马丁
答案 0 :(得分:1)
它似乎与缩放视图缩放设置有关。如果你添加
chartTopoAP.ChartAreas[0].AxisX.ScaleView.ZoomReset();
重置选择后,症状消失。