Методы и свойства класса Graphics

  • docx
  • 27.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002990.docx

 Методы и свойства класса Graphics

Имена большого количества методов, определенных в классе Graphics, начинается с префикса Draw* и Fill*. Первые из них предна- значены для рисования текста, линий и не закрашенных фигур (таких, например, как прямоугольные рамки), а вторые – для рисования закра- шенных геометрических фигур. Ниже рассматривается применение наиболее часто используемых методов, более полную информацию можно найти в документации по Visual Studio.

Метод DrawLine рисует линию, соединяющую две точки с задан- ными координатами. У метода есть несколько перегруженных версий:

 

public void DrawLine(Pen, Point, Point); public void DrawLine(Pen, PointF, PointF); public void DrawLine(Pen, int, int, int, int);

public void DrawLine(Pen, float, float, float, float);

 

Первый параметр задает инструмент для рисования линии перо.

Перья создаются как объекты класса Pen, например:

 

Pen p = new Pen(Brushes.Black, 2);

 

Здесь создаётся черное перо толщиной 2 пиксела. При создании пера можно выбрать его цвет, толщину и тип линии, а также другие ат- рибуты.

Остальные параметры перегруженных методов DrawLine задают координаты соединяемых точек. Эти координаты могут быть заданы как


объекты класса Point и PointF, а также в виде целых чисел и чисел с плавающей десятичной точкой.

В классах Point и PointF определены свойства X и Y, задающие, со- ответственно, координаты точки по горизонтальной и вертикальной оси. При этом в классе Point эти свойства имеют целочисленные значения, а в классе PointF – значения с плавающей десятичной точкой.

Третий и четвертый вариант метода DrawLine позволяет задавать координаты соединяемых точек в виде двух пар чисел. Первая пара определяет координаты первой точки по горизонтальной и вертикаль- ной оси, а вторая – координаты второй точки по этим же осям. Разница между третьим и четвертым методом заключается в использовании ко- ординат различных типов (целочисленных int и с плавающей десятич- ной точкой float).

Чтобы испытать метод DrawLine в работе, создайте приложение DrawLineApp (аналогично тому, как Вы создавали предыдущее приложе- ние). В этом приложении создайте следующий обработчик события Paint:

 

private void Form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics; g.Clear(Color.White);

for (int i = 0; i < 50; i++) g.DrawLine(new Pen(Brushes.Black, 2),

10, 4 * i + 20, 200, 4 * i + 20);

}

 

Здесь мы вызываем метод DrawLine в цикле, рисуя 50 горизонталь- ных линий (рис. 10.2).

Вызвав один раз метод DrawLines, можно нарисовать сразу не- сколько прямых линий, соединенных между собой. Иными словами, ме- тод DrawLines позволяет соединить между собой несколько точек. Ко- ординаты этих точек по горизонтальной и вертикальной оси передаются методу через массив класса Point или PointF:

 

public void DrawLines(Pen, Point[]); public void DrawLines(Pen, PointF[];


 

Рис. 10.2. Пример использования DrawLine

 

Для демонстрации возможностей метода DrawLines создайте при- ложение. Код будет выглядеть следующим образом:

 

Point[] points = new Point[50]; Pen pen = new Pen(Color.Black, 2);

 

private void Form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics; g.DrawLines(pen, points);

}

 

private void Form1_Load(object sender, EventArgs e)

{

for (int i = 0; i < 20; i++)

{

int xPos;

if (i % 2 == 0)

{


 

}

else

{

 

}


xPos = 10;

 

 

 

xPos = 400;


points[i] = new Point(xPos, 10 * i);

}

}

 

Результат работы программы приведен на рис. 10.3.

Для   прорисовки  прямоугольников  можно   использовать  метод

DrawRectangle:

 

DrawRectangle(Pen, int, int, int, int);

 

В качестве первого параметра передается перо класса Pen. Осталь- ные параметры задают расположение и размеры прямоугольника.

Для прорисовки многоугольников можно использовать следующий метод:

 

DrawPolygon(Pen, Point[]);

 


Рис. 10.3. Пример использования массива точек

Метод DrawEllipse рисует эллипс, вписанный в прямоугольную область, расположение и размеры которой передаются ему в качестве параметров. При помощи метода DrawArc программа может нарисовать сегмент эллипса. Сегмент задается при помощи координат прямоуголь- ной области, в которую вписан эллипс, а также двух углов, отсчитывае- мых в направлении против часовой стрелки. Первый угол Angle1 задает расположение одного конца сегмента, а второй Angle2 – расположение другого конца сегмента (рис. 10.4).


 

http://frolov-lib.ru/books/msnet/c_sharp2/ch10.files/image013.gif

 

Рис. 10.4. Углы и прямоугольник, задающие сегмент эллипса

В классе Graphics определен ряд методов, предназначенных для рисования закрашенных фигур. Имена некоторых из этих методов, имеющих префикс Fill*:

FillRectangle (рисование закрашенного прямоугольника), FillRectangles (рисование множества закрашенных многоугольников), FillPolygon (рисование закрашенного многоугольника), FillEllipse (рисование закрашенного эллипса) FillPie (рисование закрашенного сегмента эллипса) FillClosedCurve (рисование закрашенного сплайна) FillRegion (рисование закрашенной области типа Region).

Есть два отличия методов с префиксом Fill* от одноименных ме- тодов с префиксом Draw*. Прежде всего, методы с префиксом Fill* ри- суют закрашенные фигуры, а методы с префиксом Draw* – не закрашен- ные. Кроме этого, в качестве первого параметра методам с префиксом Fill* передается не перо класса Pen, а кисть класса SolidBrush. Ниже приведем пример выводящий закрашенный прямоугольник:

 

SolidBrush B = new SolidBrush(Color.DeepPink); g.FillRectangle(B, 0, 0, 100, 100);