Я использую MSChartControl в своем приложении. В элементе управления диаграммой я отображаю изображение, в котором я хочу использовать механизм выбора элемента управления диаграммой, чтобы выбрать диапазон изображения с помощью CursorX из области ChartArea.
В событии 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);
это работает. Но как мне очистить выбор?
Спасибо
Martin