Как смоделировать линейный график прокрутки в WPF?

Я пытаюсь заново изучить WPF, и я начал небольшой проект с линейным графиком, вроде производительности процессора, который вы видите в диспетчере задач. График представляет собой холст, к дочерним элементам которого добавлено множество линий, и основан на образце Avalon, который я нашел здесь http://msdn.microsoft.com/en-us/library/aa480159.aspx.

В настоящее время, когда я добираюсь до дальнего правого края графика, я очищаю свой набор данных и сбрасываю свою координату x обратно на ноль, и после очистки график начинает перерисовываться с левой стороны.

y = value;
x = x + 1;
if (x == samples)
{
    CpuGraphAnimation2d.Children.RemoveRange(0, samples);
    x = 0;
}

Я хочу, чтобы график «прокручивался» влево по мере поступления новых значений, и чтобы все старые значения перемещались влево и отбрасывались самые левые значения.

Каким будет наиболее эффективный способ добиться этого эффекта в WPF?


person jmcd    schedule 15.08.2009    source источник


Ответы (1)


Вы можете попробовать создать StreamGeometry следующим образом, удалив первый элемент вашего массива, прежде чем делать следующее:

        StreamGeometry sg = new StreamGeometry();

        using (StreamGeometryContext context = sg.Open())
        {
            context.BeginFigure(new Point(0, yourarray[0]), false, false);
            for (int x = 0; x < len; x++)
            {
                context.LineTo(new Point(x, yourarray[x], true, true);
            }

            sg.Freeze();
            System.Windows.Shapes.Path path = new System.Windows.Shapes.Path();
            path.Data = sg;
            path.Stroke = Brushes.Red;
        }

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

person Mark Synowiec    schedule 18.08.2009