Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема Графика в C#.doc
Скачиваний:
11
Добавлен:
03.05.2019
Размер:
3.65 Mб
Скачать

Рисование замкнутого сегмента эллипса(DrawPie)

Для рисования замкнутого сегмента эллипса используется метод DrawPie. Имеется 4 перегруженных варианта этого метода:

public void DrawPie(Pen, Rectangle, float, float); public void DrawPie(Pen, RectangleF, float, float); public void DrawPie(Pen, int, int, int, int, int, int); public void DrawPie(Pen, float, float, float, float, float, float);

В качестве первого параметра методу нужно передать перо для рисования. Последние два параметра определяют углы, ограничивающие сегмент эллипса. Эти углы используются таким же образом, как и при рисовании незамкнутого сегмента эллипса методом DrawArc. Остальные параметры задают расположение и размеры прямоугольника, в который вписывается сегмент эллипса.

Решим предыдущую задачу при помощи метода DrawPie. Вызов метода будет выглядеть следующим образом.

g.DrawPie(myPen, myRect, 90, 180);

Код обработчика события Form1_Paint имеет вид (см слайд).

private void Form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

g.Clear(Color.White);

Pen myPen = new Pen(Color.Blue, 2);

Rectangle myRect = new Rectangle(10, 10, 200, 100);

g.DrawPie(myPen, myRect, 90, 180);

}

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

Рис. Результат работы метода DrawPie.

Рисование кривых Безье (DrawBezier и DrawBeziers )

Кривая Безье, представляющая собой одну из разновидностей сплайна, задается четырьмя точками. Две из них — начальная и конечная, а две другие — управляющие. Кривая Безье проходит через начальную и конечную точки, а управляющие точки задают изгибы кривой линии. Кривые Безье часто используют при работе в графических редакторах. Для рисования кривых Безье в C# имеются два группы перегруженных методов DrawBezier и DrawBeziers (см. слайд). Различие этих групп заключается в способе представления координат точек. В группе DrawBezier координаты точек являются аргументами методов в явном виде или в виде объектов классов Point и PointF, а в группе DrawBeziers аргументами метода являются массивы объектов класса Point и PointF.

public void DrawBezier(Pen, Point, Point, Point, Point); public void DrawBezier(Pen, PointF, PointF, PointF, PointF); public void DrawBezier(Pen, float, float, float, float, float, float, float, float);

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

Продемонстрируем работу двух групп перегруженных методов на примере.

Для группы DrawBezier код будет выглядеть следующим образом. Задаем объекты класса Point.

Point point1 = new Point(10, 80);

Point point2 = new Point(50, 50);

Point point3 = new Point(110, 150);

Point point4 = new Point(190, 80);

Вызываем метод DrawBezier.

g.DrawBezier(myPen, point1,point2,point3,point4);

Для группы DrawBeziers создадим массив точек класса Point.

Point [] myPoint =

{

new Point(10, 100),

new Point(50, 90),

new Point(110, 190),

new Point(190, 60)

};

Вызов метода DrawBeziers будет выглядеть следующим образом.

g.DrawBeziers(new Pen(Color.Red),myPoint);

Код обработчика события Form1_Paint имеет вид (см слайд).

private void Form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

g.Clear(Color.White);

Pen myPen = new Pen(Color.Blue, 2);

Point point1 = new Point(10, 80);

Point point2 = new Point(50, 50);

Point point3 = new Point(110, 150);

Point point4 = new Point(190, 80);

g.DrawBezier(myPen, point1,point2,point3,point4);

Point [] myPoint =

{

new Point(10, 100),

new Point(50, 90),

new Point(110, 190),

new Point(190, 60)

};

g.DrawBeziers(new Pen(Color.Red),myPoint);

}

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

Рис. Результат работы методов DrawBezier и DrawBeziers