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

Локальные преобразования

Локальным преобразованием называется преобразование, применяемое к определенному рисуемому элементу. Например, объект GraphicsPath содержит метод Transform, позволяющий выполнять преобразования над точками, задающими контур. В приведенном ниже примере демонстрируется рисование прямоугольника без преобразования и рисование контура с применением поворота. (Предполагается, что объемные преобразования отсутствуют.)

---------

Сочетание объемного преобразования и локального преобразования позволяет получать различные результаты. Например, объемное преобразование можно использовать для изменения системы координат, а локальные преобразования можно использовать для вращения и масштабирования объектов, рисуемых в новой системе координат.

Предположим, что нужно задать систему координат с началом, удаленным на 200 точек от левого края и на 150 точек от верхнего края клиентской области. Кроме того, предположим, что в качестве единицы измерения в этой системе координат должна использоваться точка, ось X должна быть направлена вправо, а ось Y — вверх. Ось Y системы координат, заданной по умолчанию, направлена вниз, поэтому нужно выполнить отражение относительно горизонтальной оси. На приведенном ниже рисунке показана матрица, задающая такое отражение.

Затем предположим, что нужно выполнить сдвиг на 200 единиц вправо и на 150 единиц вниз.

В приведенном ниже примере демонстрируется введение системы координат, описанное заданием объемного преобразования для объекта Graphics.

-------

The following code (placed at the end of the preceding example) creates a path that consists of a single rectangle with its lower-left corner at the origin of the new coordinate system. The rectangle is filled once with no local transformation and once with a local transformation. The local transformation consists of a horizontal scaling by a factor of 2 followed by a 30-degree rotation.

// Create the path.

GraphicsPath myGraphicsPath = new GraphicsPath();

Rectangle myRectangle = new Rectangle(0, 0, 60, 60);

myGraphicsPath.AddRectangle(myRectangle);

// Fill the path on the new coordinate system.

// No local transformation

myGraphics.FillPath(mySolidBrush1, myGraphicsPath);

// Set the local transformation of the GraphicsPath object.

Matrix myPathMatrix = new Matrix();

myPathMatrix.Scale(2, 1);

myPathMatrix.Rotate(30, MatrixOrder.Append);

myGraphicsPath.Transform(myPathMatrix);

// Fill the transformed path on the new coordinate system.

myGraphics.FillPath(mySolidBrush2, myGraphicsPath);

The following illustration shows the new coordinate system and the two rectangles.

Приведенный ниже код (который должен следовать сразу после кода из примера, приведенного выше) создает контур, состоящий из одного прямоугольника, нижний левый угол которого расположен в начале новой системы координат. Прямоугольник заливается один раз без применения локальных преобразований и один раз с применением локального преобразования. Локальное преобразование заключается в масштабировании по горизонтали с коэффициентом 2, после которого применяется поворот на 30 градусов.

-----

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

Using Managed Graphics Classes

Getting Started with Graphics Programming

This section shows how to get started using GDI+ in a Windows Forms application.

How to: Create Graphics Objects for Drawing

Before you can draw lines and shapes, render text, or display and manipulate images with GDI+, you need to create a Graphics object. The Graphics object represents a GDI+ drawing surface, and is the object that is used to create graphical images.

There are two steps in working with graphics:

  1. Creating a Graphics object.

  2. Using the Graphics object to draw lines and shapes, render text, or display and manipulate images.

Creating a Graphics Object

A graphics object can be created in a variety of ways.

To create a graphics object

  • Receive a reference to a graphics object as part of the PaintEventArgs in the Paint event of a form or control. This is usually how you obtain a reference to a graphics object when creating painting code for a control.

-or-

  • Call the CreateGraphics method of a control or form to obtain a reference to a Graphics object that represents the drawing surface of that control or form. Use this method if you want to draw on a form or control that already exists.

-or-

  • Create a Graphics object from any object that inherits from Image. This approach is useful when you want to alter an already existing image.

The following sections give details about each of these processes.

PaintEventArgs in the Paint Event Handler

When programming the PaintEventHandler for controls, a graphics object is provided as one of the PaintEventArgs.

To obtain a reference to a Graphics object from the PaintEventArgs in the Paint event

  1. Declare the Graphics object.

  2. Assign the variable to refer to the Graphics object passed as part of the PaintEventArgs.

  3. Insert code to paint the form or control.