Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Graphics.doc
Скачиваний:
16
Добавлен:
16.11.2019
Размер:
3.1 Mб
Скачать

Рисование последовательности сплайнов Безье

Чтобы нарисовать последовательность связанных сплайнов Безье, необходимо воспользоваться методом DrawBeziers класса Graphics.

Пример

В следующем примере рисуется кривая, состоящая из двух соединенных сплайнов Безье. Конечная точка первого сплайна Безье является начальной точкой для второго.

На следующем рисунке представлены соединенные сплайны и семь точек.

-----

Компиляция кода

Предыдущий пример предназначен для работы с Windows Forms, для него необходим объект PaintEventArgs e, передаваемый в качестве параметра обработчику события Paint.

Constructing and Drawing Paths

A path is a sequence of graphics primitives (lines, rectangles, curves, text, and the like) that can be manipulated and drawn as a single unit. A path can be divided into figures that are either open or closed. A figure can contain several primitives.

You can draw a path by calling the DrawPath method of the Graphics class, and you can fill a path by calling the FillPath method of the Graphics class.

How to: Create Figures from Lines, Curves, and Shapes

To create a figure, construct a GraphicsPath, and then call methods, such as AddLine and AddCurve, to add primitives to the path.

Example

The following code examples create paths that have figures:

  • The first example creates a path that has a single figure. The figure consists of a single arc. The arc has a sweep angle of –180 degrees, which is counterclockwise in the default coordinate system.

  • The second example creates a path that has two figures. The first figure is an arc followed by a line. The second figure is a line followed by a curve followed by a line. The first figure is left open, and the second figure is closed.

GraphicsPath path = new GraphicsPath();

path.AddArc(175, 50, 50, 50, 0, -180);

e.Graphics.DrawPath(new Pen(Color.FromArgb(128, 255, 0, 0), 4), path);

Построение и рисование контуров

Контур представляет собой последовательность графических примитивов (линий, прямоугольников, кривых, текста и т. п.), которые обрабатываются и отображаются как один объект. Контур можно разделить на отдельные фигуры, которые являются либо незамкнутыми, либо замкнутыми. Фигура может содержать несколько примитивов.

Чтобы нарисовать контур, можно вызвать метод DrawPath класса Graphics. Заливка пути осуществляется с помощью метода FillPath класса Graphics.

Создание изображений из прямых и кривых линий и геометрических фигур

Чтобы создать изображение, создайте объект GraphicsPath, а затем вызовите его методы, например AddLine или AddCurve, для добавления к изображению примитивов.

Пример

В следующем примере кода создается контур, состоящий из двух фигур.

  • В первом примере создается контур, состоящий из одной фигуры. Фигура представляет собой одну дугу. Дуга имеет угол развертки, равный 180 градусам, в принятой по умолчанию системе координат он соответствует движению против часовой стрелки.

  • Во втором примере создается контур, состоящий из двух фигур. Первая фигура представляет собой дугу, за которой следует линия. Вторая фигура является прямой, за которой следуют кривая и другая прямая. Первая фигура незамкнутая, а вторая — замкнутая.

--------

// Create an array of points for the curve in the second figure.

Point[] points = {

new Point(40, 60),

new Point(50, 70),

new Point(30, 90)};

GraphicsPath path = new GraphicsPath();

path.StartFigure(); // Start the first figure.

path.AddArc(175, 50, 50, 50, 0, -180);

path.AddLine(100, 0, 250, 20);

// First figure is not closed.

path.StartFigure(); // Start the second figure.

path.AddLine(50, 20, 5, 90);

path.AddCurve(points, 3);

path.AddLine(50, 150, 150, 180);

path.CloseFigure(); // Second figure is closed.

e.Graphics.DrawPath(new Pen(Color.FromArgb(255, 255, 0, 0), 2), path);

Compiling the Code

The previous examples are designed for use with Windows Forms, and they require PaintEventArgs e, which is a parameter of the Paint event handler.

-----