Последние изменения - Поиск:
RSS блога RSS блога

Начало

Блог

Программки

    Google+

Плагины

Программирование

Фото

Контакты

Я в твиттере Я в ЖЖ

Шпаргалка по 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 ();
}

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

Пожалуйста, оцените материал

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



Илья 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 ?


Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 672
 
Править - История - Печать - Последние изменения - Поиск
Последняя редакция от 03.11.2011 12:53