Моя проблема связана с графиком в 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 должно быть указано в текстовом поле, поэтому должна быть некоторая привязка к диаграмме с помощью курсора или аннотации. Спасибо за помощь!