MSChartControl странное поведение при выборе - PullRequest
0 голосов
/ 04 августа 2011

Я использую 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

1 Ответ

1 голос
/ 04 августа 2011

Похоже, это связано с настройками масштаба. если вы добавите

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

после сброса выбора, симптом исчезает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...