- •Тема Графика в c#.
- •Контекст отображения
- •Класс Graphics
- •Событие Paint
- •Тема Методы и свойства класса Graphics. Рисование геометрических фигур Рисование линии (DrawLine)
- •Набор линий (DrawLines)
- •Рисование прямоугольника(DrawRectangle )
- •Набор прямоугольников (DrawRectangles )
- •Рисование многоугольника (DrawPolygon)
- •Рисование эллипса(DrawEllipse )
- •Результат работы метода DrawEllipse Рисование сегмента эллипса (DrawArc)
- •Рисование замкнутого сегмента эллипса(DrawPie)
- •Рисование кривых Безье (DrawBezier и DrawBeziers )
- •Рисование канонических сплайнов (DrawCurve и DrawClosedCurve)
- •Рисование закрашенных фигур.
- •Тема. Инструменты для рисования
- •Инструмент для рисования перо (Pen) и его свойства
- •Инструмент для рисования кисть (Brush)
- •Кисть SolidBrush
Рисование замкнутого сегмента эллипса(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