Концы линий

Концы линий

Если рассмотреть вывод предыдущего примера, вы должны заметить, что начало и конец каждой линии там оформлен вполне стандартно – линия "срезается" под углом 90° к ее направлению. Но, используя перечень LineCap, вы имеете возможность создавать объекты Pen, демонстрирующие иное поведение.

public enum LineCap {

 Flat, Square, Round,

 Triangle, NoAnchor,

 SquareAnchor, RoundAnchor,

 DiamondAnchor, ArrowAnchor,

 AnchorMask, Custom

}

Следующее приложение отображает набор линий, по очереди используя каждый из стилей LineCap. Конечный результат показан на рис. 20.13.

Рис. 20.13. Работа с концами линий

В соответствующем программном коде просто используется цикл по всем членам перечня LineCap с выводам имени соответствующего элемента (например, ArrowAnchor) и отображением линии с соответствующим оформлением ее концов.

private void MainForm_Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;

 Pen thePen = new Pen(Color.Black, 10);

 int yOffSet = 10;

 // Получение всех членов перечня LineCap.

 Array obj = Enum.GetValues(typeof(LineCap));

 // Рисование линии для данного члена LineCap.

 for (int х = 0; х ‹ obj. Length; x++) {

  // Получение следующего стиля конца линии и настройка пера.

  LineCap temp = (LineCap)obj.GetValue(x);

  thePen.StartCap = temp;

  thePen.EndCap = temp;

  // Вывод имени из перечня LineCap.

  g.Drawstring(temp.ToString(), new Font("Times New Roman", 10), new SolidBrush(Color.Black), 0, yOffSet);

  // Рисование линии с соответствующим стилем концов.

  g.DrawLine(thePen, 100, yOffSet, Width – 50, yOffSet);

  yOffSet += 40;

 }

}

Исходный код. Проект PenCapApp размещен в подкаталоге, соответствующем главе 20.