logo search
CSharp_Graphics

Использование объемного преобразования

Объемное преобразование является свойством класса Graphics. Числа, определяющие объемное преобразование, хранятся в объекте Matrix, представляющем собой матрицу размером 3×3. Классы Matrix и Graphics содержат различные методы для установки элементов матрицы объемного преобразования.

Different Types of Transformations

In the following example, the code first creates a 50×50 rectangle and locates it at the origin (0, 0). The origin is at the upper-left corner of the client area.

Rectangle rect = new Rectangle(0, 0, 50, 50);

Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2);

e.Graphics.DrawRectangle(pen, rect);

The following code applies a scaling transformation that expands the rectangle by a factor of 1.75 in the x direction and shrinks the rectangle by a factor of 0.5 in the y direction:

e.Graphics.ScaleTransform(1.75f, 0.5f);

e.Graphics.DrawRectangle(pen, rect);

The result is a rectangle that is longer in the x direction and shorter in the y direction than the original.

To rotate the rectangle instead of scaling it, use the following code:

e.Graphics.ResetTransform();

e.Graphics.RotateTransform(28); // 28 degrees

e.Graphics.DrawRectangle(pen, rect);

To translate the rectangle, use the following code:

e.Graphics.ResetTransform();

e.Graphics.TranslateTransform(150, 150);

e.Graphics.DrawRectangle(pen, rect);