Использование мирового преобразования
Преобразование мира — это свойство класса Graphics. Числа, указывающие преобразование мира, хранятся в объекте Matrix, представляющего матрицу 3×3. Классы Matrix и Graphics имеют несколько методов настройки чисел в матрице преобразования мира.
Различные типы преобразований
В следующем примере код сначала создает прямоугольник 50×50 и находит его в источнике (0, 0). Начало координат находится в левом верхнем углу клиентской области.
Rectangle rect = new Rectangle(0, 0, 50, 50);
Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2);
e.Graphics.DrawRectangle(pen, rect);
Dim rect As New Rectangle(0, 0, 50, 50)
Dim pen As New Pen(Color.FromArgb(128, 200, 0, 200), 2)
e.Graphics.DrawRectangle(pen, rect)
Следующий код применяет преобразование масштабирования, которое расширяет прямоугольник по коэффициенту 1,75 в направлении x и сжимает прямоугольник на 0,5 в направлении y:
e.Graphics.ScaleTransform(1.75f, 0.5f);
e.Graphics.DrawRectangle(pen, rect);
e.Graphics.ScaleTransform(1.75F, 0.5F)
e.Graphics.DrawRectangle(pen, rect)
Результатом является прямоугольник, который длиннее направления x и короче в направлении y, чем исходный.
Чтобы повернуть прямоугольник вместо масштабирования, используйте следующий код:
e.Graphics.ResetTransform();
e.Graphics.RotateTransform(28); // 28 degrees
e.Graphics.DrawRectangle(pen, rect);
e.Graphics.ResetTransform()
e.Graphics.RotateTransform(28) ' 28 degrees
e.Graphics.DrawRectangle(pen, rect)
Чтобы перевести прямоугольник, используйте следующий код:
e.Graphics.ResetTransform();
e.Graphics.TranslateTransform(150, 150);
e.Graphics.DrawRectangle(pen, rect);
e.Graphics.ResetTransform()
e.Graphics.TranslateTransform(150, 150)
e.Graphics.DrawRectangle(pen, rect)
См. также
.NET Desktop feedback