Я использовал следующее, чтобы сделать его более универсальным (автоматическая синхронизация всего, что в данный момент активно (манипулирование)
я есть три сигнала (напряжение, ток и энергия), относящиеся к одному и тому же периоду. Я печатаю данные на двух графиках: один с напряжением (синий) и током (красный), а другой только с энергией (оранжевый). Это два разных графика, но на практике они имеют одну и ту же ось X.
У меня есть два курсора, синхронизированных с движением мыши, которое действует как один курсор для двух графиков, и всплывающая подсказка, основанная на позиции курсора, показывает текущие выбранные значения для трех сигналов (все три серии имеют IsXValueIndexed = true с интервалом = 1). Как видите, они хорошо работают:
У меня две проблемы:
1) когда я начинаю делать масштабирование, они начинают различаться по выравниванию сетки и размеру области диаграммы. После регистрации всегда последней точки с событием «Изменение», когда пользователь отпускает левую кнопку мыши, срабатывает событие «Изменить» и выполняются следующие действия: Я налагаю масштаб на противоположный график на основе имени источника.
dlChart_SelectionRangeChange(object sender, CursorEventArgs e){
var source = sender as Chart;
double sp = selection_point.getStartPoint();
double ep = selection_point.getEndPoint();
double tmp = 0;
if (sp == ep)
return;
if (sp > ep)
{// zoom contrario
tmp = sp;
sp = ep;
ep = tmp;
}
switch (source.ChartAreas[0].Name)
{
case CHARTAREA1_NAME:
dlChart2.ChartAreas[0].AxisX.ScaleView.Zoom(sp, ep);
break;
case CHARTAREA2_NAME:
dlChart.ChartAreas[0].AxisX.ScaleView.Zoom(sp, ep);
break;
default: break;
}
}
Следующее изображение описывает проблему:
2) после увеличения масштаба одного графика появляется полоса прокрутки, и в этот момент пользователь может изменить вид графика только на одном графике. Я хочу прокрутить так же, как и другой график.
Я всегда хочу, чтобы две диаграммы вели себя как одна диаграмма.