Код: Выделить всё
private SeriesCollection _graphData;
public SeriesCollection GraphData
{
get => _graphData;
set
{
_graphData = value;
OnPropertyChanged();
}
}
Код: Выделить всё
private void UpdateGraphData()
{
if (media != null && media.StreamList.Count > 0 && media.StreamList[0].FrameList.Count > 0)
{
var stream = media.StreamList[0];
var values = new ChartValues();
double? previousValue = null;
for (int i = 0; i < stream.FrameList.Count; i++)
{
var frame = stream.FrameList[i];
double currentValue;
if (IsRedSelected)
currentValue = frame.RGBChannelsForRMS.RedChannel;
else if (IsGreenSelected)
currentValue = frame.RGBChannelsForRMS.GreenChannel;
else if (IsBlueSelected)
currentValue = frame.RGBChannelsForRMS.BlueChannel;
else
continue;
if (previousValue.HasValue)
{
double change = Math.Abs(currentValue - previousValue.Value);
values.Add(change);
}
else
{
values.Add(0);
}
previousValue = currentValue;
}
GraphData.Clear();
GraphData.Add(new LineSeries
{
Values = values,
Title = IsRedSelected ? "Red Change" : (IsGreenSelected ? "Green Change" : "Blue Change")
});
ShowFrame();
}
}
Код: Выделить всё
public void ShowFrame()
{
GraphData.Add(new VerticalLineSeries
{
Values = new ChartValues { FramePointer },
Stroke = System.Windows.Media.Brushes.Black,
StrokeThickness = 2,
LineSmoothness = 0,
Title = "Frame Pointer"
});
}
Я проверял его в режиме отладки, когда он работает или не работает.
Это когда он работает (при первом вызове метода):
первый звонок
А это из другого звонка:
еще один звонок
Подробнее здесь: https://stackoverflow.com/questions/790 ... be-updated