Шпаргалка по ZedGraph. Как на графике рисовать линии, стрелки и писать текст

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

Проект в примере - DrawLines.

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 = -50;
    double xmax = 50;

    // Заполняем список точек
    for (double x = xmin; x <= xmax; x += 0.01)
    {
        list.Add (x, f(x));
    }
    LineItem myCurve = pane.AddCurve ("Sinc", list, Color.Blue, SymbolType.None);

    zedGraph.AxisChange ();

    // !!!
    // Линию рисуем после обновления осей с помощью AxisChange (),
    // так как мы будем использовать значения
    // Нарисуем горизонтальную пунктирную линию от левого края до правого на уровне y = 0.5
    double level = 0.5;
    LineObj line = new LineObj (pane.XAxis.Scale.Min, level, pane.XAxis.Scale.Max, level);

    // Стиль линии - пунктирная
    line.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash;

    // Добавим линию в список отображаемых объектов
    pane.GraphObjList.Add (line);

    // Нарисуем стрелку, указыающую на максимум функции
    // Координаты точки, куда указывает стрелка
    // Координаты привязаны к осям
    double xend = 0.0;
    double yend = f(0);

    // Координаты точки начала стрелки
    double xstart = xend + 5.0;
    double ystart = yend + 0.1;

    // Рисование стрелки с текстом
    // Создадим стрелку
    ArrowObj arrow = new ArrowObj (xstart, ystart, xend, yend);

    // Добавим стрелку в список отображаемых объектов
    pane.GraphObjList.Add (arrow);

    // Напишем текст около начала стрелки
    // Координаты привязаны к осям
    TextObj text = new TextObj ("Max", xstart, ystart);

    // Отключим рамку вокруг текста
    text.FontSpec.Border.IsVisible = false;

    // Добавим текст в список отображаемых объектов
    pane.GraphObjList.Add (text);

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

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

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

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



Илья 08.01.2011 - 23:16

Текст на графике

Было бы неплохо добавить строки, меняющие поля title, xaxis,yaxis.

Очень нравится ваш ресурс и сам метод представления информации.

Jenyay 09.01.2011 - 09:17

Текст я не менял специально, чтобы не усложнять код, чтобы в нем было только строки, которые непосредственно относятся к примеру.

 03.02.2011 - 16:23

А чтобы текст не вылезал за границы области рисования надо сделать так:

              Axis axisX = myCurve1.BaseAxis(myPane);
                Axis axisY = myCurve1.ValueAxis(myPane);

                TextObj text = new TextObj("text", list1[0].X, list1[0].Y);
                text.FontSpec.Border.IsVisible = false;
                text.FontSpec.FontColor = Color.Brown;
                text.FontSpec.Fill.Color = SystemColors.Info;

                if (axisX.Scale.Min < text.Location.X && text.Location.X < axisX.Scale.Max &&
                    axisY.Scale.Min < text.Location.Y && text.Location.Y < axisX.Scale.Max)
                {
                    zGraphMain.GraphPane.GraphObjList.Add(text);
                }
            }

Андрей 11.04.2011 - 18:45

Jenyay, это не "чтобы текст не вылезал за границы области рисования". Это чтобы он рисовался, только если не выходит за границы :)
Кстати, не знаешь, как узнать/вычислить размер (высоту, ширину) объекта TextObj в единицах измерения графика (не в пикселах)?

mail-22 05.05.2011 - 22:46

mail-22@ya.ru

а как изменить поля title, xaxis,yaxis ?

kot 23.02.2012 - 19:03

Удалить текст

Как можно удалять текст с графика? (например для его изменения при нажатии на кнопку)

Анна 20.03.2012 - 21:56

Как задать цвет и толщину добавляемым линиям?

ProgramerDay 27.09.2016 - 00:39

CHANGE title, xaxis,yaxis

GraphPane FirstPane = zedGraphFunctions.GraphPane;

            // Изменим тест надписи по оси X
            FirstPane.XAxis.Title.Text = "Вісь X";

          // Изменим текст по оси Y
    FirstPane.YAxis.Title.Text = "ВісьY";

            // Изменим текст заголовка графика
            FirstPane.Title.Text = "Functions";

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