Шпаргалка по ZedGraph. Как создать разрывы на кривой

Если кривая на графике должна разываться, то для этого есть два пути: для каждого кусочка графика создавать свою кривую, или просто добавить точки разрыва. Второй способ удобен, если разрывов может быть много. В качестве разрыва используется значение PointPairBase.Missing для обоих координат.

Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда.

Проект в примере - LineBreak

public partial class Form1 : Form
{
    public Form1 ()
    {
        InitializeComponent ();

        DrawGraph ();
    }

    private double f (double x)
    {
        if (x == 0)
        {
            return 1;
        }

        return Math.Sin (x) / x;
    }


    private void DrawGraph ()
    {
        // Получим панель для рисования
        GraphPane pane = zedGraph.GraphPane;

        // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
        pane.CurveList.Clear ();

        // Создадим список точек
        PointPairList list = new PointPairList ();

        // Общий интервал для построения графика
        double xmin = -20;
        double xmax = 20;

        // На интервале (xbreak1; xbreak2) график будет обрываться
        double xbreak1 = -2;
        double xbreak2 = 2;

        // Заполняем первую часть графика до разрыва
        for (double x = xmin; x <= xbreak1; x += 0.01)
        {
            list.Add (x, f (x));
        }

        // Добавим точку разрыва.
        // Формально PointPairBase.Missing - это значение Double.MaxValue,
        // но лучше всегда использовать именно PointPairBase.Missing.
        list.Add (PointPairBase.Missing, PointPairBase.Missing);

        // Заполняем вторую часть графика после разрыва
        for (double x = xbreak2; x <= xmax; x += 0.01)
        {
            list.Add (x, f (x));
        }

        // Создадим кривую, в которую входит разрыв
        LineItem myCurve = pane.AddCurve ("", list, Color.Blue, SymbolType.None);

        // Вызываем метод AxisChange (), чтобы обновить данные об осях.
        zedGraph.AxisChange ();

        // Обновляем график
        zedGraph.Invalidate ();
    }
}

Вернуться к остальным примерам

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
4 stars

Рейтинг 3.8/5. Всего 6 голос(а, ов)



Zelen 24.10.2011 - 11:32

добавление точки на график без стирания предыдущих точек

Вообщем у меня график содержит большое количество точек, которые надо выводить поточечно: т. е. каждый раз добавлять новую точку на графике, при этом старые точки не должны стираться. К сожалению Invalidate() затирает предыдущие точки и построить график невозможно. Есть ли какие нибудь способы обновления zedgraph без стирания старых графиков ?


Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 934