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