netlib.narod.ru< Назад | Оглавление | Далее >

Прямые линии

Для рисования одиночных прямых служит метод DrawLine класса Graphics. Есть четыре перегруженных версии DrawLine, но все они требуют один и тот же набор аргументов: координаты начальной и конечной точек линии, а также перо, которым она рисуется:


Методы DrawLine класса Graphics



void DrawLine(Pen pen, int x1, int y1, int x2, int y2)
void DrawLine(Pen pen, float x1, float y1, float x2, float y2)
void DrawLine(Pen pen, Point point1, Point point2)
void DrawLine(Pen pen, PointF point1, PointF point2)


Можно указывать координаты как четырьмя значениями типа int или float, так и парой структур Point или PointF.

Метод DrawLine чертит линию от первой точки до второй, включая вторую точку в состав линии (этим он несколько отличается от Win32 GDI, который проводит линию между двумя точками, не включая конечную точку в состав линии). Вот пример:

  grfx.DrawLine(pen, 0, 0, 5, 5);

Эта команда закрашивает черным цветом 6 пикселов с координатами (0, 0), (1, 1), (2, 2), (3, 3), (4, 4) и (5, 5). Порядок указания начальной и конечной точек линии не имеет значения, поэтому вызов:

  grfx.DrawLine(pen, 5, 5, 0, 0);

даст тот же результат. Вызов:

  grfx.DrawLine(pen, 2, 2, 3, 3);

рисует 2 пиксела с координатами (2, 2) и (3, 3). Однако вызов:

  grfx.DrawLine(pen, 3, 3, 3, 3);

не рисует ничего.

Как вам известно, определить ширину и высоту клиентской области позволяет свойство ClientSize формы. Число пикселов по горизонтали определяется значением ClientSize.Width; пикселы могут нумероваться от 0 до ClientSize.Width - 1. Аналогично пикселы клиентской области по вертикали нумеруются от 0 до ClientSize.Height - 1.

Программа XMarksTheSpot рисует крестик в клиентской области.

XMarksTheSpot.cs

  //-----------------------------------------------
  // XMarksTheSpot.cs (C) 2001 by Charles Petzold
  //-----------------------------------------------
  using System;
  using System.Drawing;
  using System.Windows.Forms;

  class XMarksTheSpot: Form
  {
      public static void Main()
      {
          Application.Run(new XMarksTheSpot());
      }
      public XMarksTheSpot()
      {
          Text = "X Marks The Spot";
          BackColor = SystemColors.Window;
          ForeColor = SystemColors.WindowText;
          ResizeRedraw = true;
      }
      protected override void OnPaint(PaintEventArgs pea)
      {
          Graphics grfx = pea.Graphics;
          Pen      pen  = new Pen(ForeColor);

          grfx.DrawLine(pen, 0, 0, 
                             ClientSize.Width - 1, ClientSize.Height - 1);
          grfx.DrawLine(pen, 0, ClientSize.Height - 1, 
                             ClientSize.Width - 1, 0);
      }
  }

Первый вызов DrawLine рисует линию от верхнего левого до нижнего правого пиксела клиентской области. Второй вызов DrawLine ведет линию из нижнего левого пиксела с координатами (0, ClientSize.Height – 1) и доводит ее до верхнего правого пиксела с координатами (ClientSize.Width – 1, 0).


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz