Привязка трекбара к положению графика CursorX для параллельного и одновременного движения в C# - PullRequest
0 голосов
/ 13 февраля 2020

Моя проблема связана с графиком в C#: я хочу, чтобы вертикальная линия (например, CursorX) двигалась одновременно с большим пальцем трекбара, расположенного внизу. Действие должно начаться с трекбара.

Ось x отформатирована как DateTime, что приводит к следующей проблеме: трекбар принимает только целые числа в качестве значений, в то время как позиция CursorX задается как double, поэтому я сделал следующее:

Переменная i определяется как максимальное количество значений x, поэтому диапазон трекбара указывается целыми числами (от 0 до i). Начиная с минимума, я рассчитываю положение CursorX с каждым движением большого пальца. В текстовом поле отображается текущая позиция CursorX.

Этот метод не очень эффективен, особенно для больших наборов данных. Я также хочу, чтобы большой палец и курсор были выровнены, что невозможно в этом методе, поскольку ширина диаграммы зависит от данных.

Изображение моего результата: https://ibb.co/0m8G6KV

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            ChartArea chart = chart1.ChartAreas[0];
            chart.CursorX.LineWidth = 2;

            trackBar1.Minimum = 0;
            trackBar1.Maximum = i;

            double Min = chart.AxisX.Minimum;
            double factor = 1.0 / 86400.0;                            //1 second as a double 
            chart.CursorX.Position = Min + trackBar1.Value * factor;
            Xpos = chart.CursorX.Position;
            textBox1.Text = DateTime.FromOADate(Xpos).ToString("HH:mm:ss", CultureInfo.InvariantCulture);
        }

Есть ли какой-либо другой метод для установки положения большого пальца трекбара одновременно с CursorX? Лучший способ - использовать координаты, но я не знаю, как это реализовать. Текущее значение x должно быть указано в текстовом поле, поэтому должна быть некоторая привязка к диаграмме с помощью курсора или аннотации. Спасибо за помощь!

...