Шпаргалка по ZedGraph. Как рисовать пунктирные и штрихпунктирные линии

Этот пример показывает как с помощью компонента ZedGraph рисовать пунктирные и штрихпунктирные линии, а также как использовать другие стили для линий.

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

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

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 ();

    // Нарисуем три кривые с разными стилями
    AddCurve1 (pane);
    AddCurve2 (pane);
    AddCurve3 (pane);

    // Вызываем метод AxisChange (), чтобы обновить данные об осях.
    // В противном случае на рисунке будет показана только часть графика,
    // которая умещается в интервалы по осям, установленные по умолчанию
    zedGraph.AxisChange ();

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

/// <summary>
/// Нарисовать кривую в виде точек
/// </summary>
private void AddCurve1 (GraphPane pane)
{
    PointPairList list = new PointPairList ();

    double xmin = -20;
    double xmax = 20;

    for (double x = xmin; x <= xmax; x += 0.1)
    {
        list.Add (x, f (x));
    }

    LineItem myCurve = pane.AddCurve ("Curve 1", list, Color.Blue, SymbolType.None);

    // Используем предустановленный стиль, рисующий кривую точками.
    // Идентификатор стиля определен в System.Drawing.Drawing2D.DashStyle.
    myCurve.Line.Style = DashStyle.Dot;

    // Укажем, что график должен быть сглажен,
    // иначе несплошные линии будут выглядеть неаккуратно.
    // Это происходит из-за того, что без использования сглаживания
    // ZedGraph будет каждый участок линии рисовать независимо от соседних.
    myCurve.Line.IsSmooth = true;
}


/// <summary>
/// Нарисовать кривую в виде штрихпунктирной линии
/// </summary>
private void AddCurve2 (GraphPane pane)
{
    PointPairList list = new PointPairList ();

    double xmin = -20;
    double xmax = 20;

    for (double x = xmin; x <= xmax; x += 0.1)
    {
        list.Add (x, f (2 * x));
    }

    LineItem myCurve = pane.AddCurve ("Curve 2", list, Color.Black, SymbolType.None);

    // Используем предустановленный стиль, рисующий кривую в виде штрихпунктирной линии.
    myCurve.Line.Style = DashStyle.DashDot;

    // Укажем, что график должен быть сглажен
    myCurve.Line.IsSmooth = true;
}

/// <summary>
/// Нарисовать кривую нестандартным стилем
/// </summary>
private void AddCurve3 (GraphPane pane)
{
    PointPairList list = new PointPairList ();

    double xmin = -20;
    double xmax = 20;

    for (double x = xmin; x <= xmax; x += 0.1)
    {
        list.Add (x, f (0.1 * x));
    }

    LineItem myCurve = pane.AddCurve ("Curve 3", list, Color.Brown, SymbolType.None);

    // Определим свой стиль рисования линии
    myCurve.Line.Style = DashStyle.Custom;

    // Длина пунктира будет 10 у.е. (1 у.е = 1/72 inch)
    myCurve.Line.DashOn = 10.0f;

    // Длина пропуска между пунктирами
    myCurve.Line.DashOff = 3.0f;

    // Укажем, что график должен быть сглажен
    myCurve.Line.IsSmooth = true;
}
 

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

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

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



 16.09.2011 - 13:40

Аккуратно пользуйтесь myCurve.Line.IsSmooth = true;

Аккуратно пользуйтесь

    myCurve.Line.IsSmooth = true;

так как если он включен, то кривая становится похоже на сплайн, то есть сглаженая кривая, с небольшими артефактными закругления у опорных точек.
Если вдруг кому-то необходимо будет видеть именно ломаную кривую, то отключайте это сглаживание.
Для сглаживания линий графика можно использовать свойство myCurve.Line.IsAntiAlias, чтобы уменьшить ступенчатый эффект при отображении этих линий.

 17.11.2012 - 22:40

пунктирные линии и т.д.

пунктирные линии и прочие строятся между точками построения кривой. Если расчетных точек много то штрихи просто напросто сливаются, образуя простую линию


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