matrix-global-local-world-transformation

Системи координат важливі під час роботи з графікою та фігурами. Координатну вісь можна обертати для отримання нових осей через те саме начало координат. Давайте розглянемо наступні перетворення, включаючи Матричне, Глобальне, Локальне та Світове перетворення за допомогою мови C#. Крім того, давайте дізнаємося наступні перетворення за допомогою цієї статті:

Матричне, глобальне, локальне та світове перетворення – встановлення C# API

Aspose.Drawing for .NET API підтримує обробку різних об’єктів малювання. Ви можете легко створювати, редагувати, трансформувати або відтворювати графіку у своїх програмах на основі .NET. Просто завантажте файл DLL із розділу Нові випуски. З іншого боку, ви можете налаштувати його з NuGet за допомогою такої команди встановлення:

PM> Install-Package Aspose.Drawing

Програмне застосування перетворення матриці за допомогою C#

Клас Matrix має афінну матрицю 3 на 3, яка представляє перетворення. Ви можете використовувати його для повороту, перекладу або масштабування фігури відповідно до ваших вимог. Наступні кроки пояснюють, як застосувати матричне перетворення:

  1. Створіть об’єкт класу Bitmap.
  2. Створіть форму
  3. Застосувати перетворення матриці

Наведений нижче код показує, як програмно застосувати перетворення матриці за допомогою мови C#:

// Ініціалізація об’єкта класу Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Оголосити об’єкт класу Graphics
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Ініціювати об’єкт класу Rectangle
Rectangle originalRentangle = new Rectangle(300, 300, 300, 200);
TransformPath(graphics, originalRentangle, (matrix) => matrix.Rotate(15.0f));
TransformPath(graphics, originalRentangle, (matrix) => matrix.Translate(-250, -250));
TransformPath(graphics, originalRentangle, (matrix) => matrix.Scale(0.3f, 0.3f));

// Збережіть вихідне зображення за допомогою перетворення матриці
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\MatrixTransformations_out.png");

private static void TransformPath(Graphics graphics, Rectangle originalRentangle, Action<Matrix> transform)
{
    GraphicsPath path = new GraphicsPath();
    path.AddRectangle(originalRentangle);

    Matrix matrix = new Matrix();
    transform(matrix);
    path.Transform(matrix);

    Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
    graphics.DrawPath(pen, path);
}

Програмне застосування глобального перетворення координат за допомогою C#

Глобальне перетворення використовується для перетворення всіх графічних об’єктів на малюнку. Щоб застосувати глобальне перетворення координат, виконайте наведені нижче дії.

  1. Ініціалізація екземпляра класу Bitmap
  2. Оголосити об’єкт класу Graphics.
  3. Встановити обертання
  4. Намалюйте фігуру за допомогою глобальної трансформації

Наступний код розробляє глобальне перетворення координат програмним шляхом за допомогою C#:

// Ініціалізація об’єкта класу Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Установіть трансформацію, яка буде застосована до кожного намальованого елемента:
graphics.RotateTransform(15);

Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawEllipse(pen, 300, 300, 400, 200);

// Збережіть вихідне зображення за допомогою перетворення Glabal
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\GlobalTransformation_out.png");

Встановити локальне перетворення програмно в C#

Локальна трансформація пов’язана з конкретними формами чи графікою на малюнку. Це можна пояснити перетворенням графічного шляху, де трансформуються лише елементи цього шляху. Ви можете встановити локальне перетворення, виконавши такі дії:

  1. Ініціалізація об’єкта класу Bitmap
  2. Оголошення об’єкта класу Graphics та GraphicsPath.
  3. Створіть форму та визначте матрицю
  4. Виклик методу Transform

Наведений нижче фрагмент коду пояснює, як установити локальне перетворення програмним шляхом за допомогою C#:

// Ініціалізація об’єкта класу Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

GraphicsPath path = new GraphicsPath();
path.AddEllipse(300, 300, 400, 200);

// Встановіть трансформацію, яка буде застосована до конкретного контуру, який потрібно намалювати:
Matrix matrix = new Matrix();
matrix.RotateAt(45, new Point(500, 400));
path.Transform(matrix);

Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawPath(pen, path);

// Збережіть вихідне зображення за допомогою локальної трансформації
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\LocalTransformation_out.png");

Програмне застосування World Transformation за допомогою C#

Перетворення світових координат у координати сторінки відоме як світова трансформація. Такі координати сторінки потім використовуються для відтворення графіки на різних пристроях. Отже, ви можете застосувати трансформацію світу за допомогою C#, виконавши наведені нижче дії.

  1. Ініціалізація об’єкта класу Bitmap
  2. Викличте метод TranslateTransform.
  3. Намалюйте фігуру

У наведеному нижче коді показано, як програмно застосувати трансформацію світу за допомогою мови C#:

// Ініціалізація об’єкта класу Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Установіть перетворення, яке відображає світові координати на координати сторінки:
graphics.TranslateTransform(500, 400);

Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawRectangle(pen, 0, 0, 300, 200);

// Збережіть вихідне зображення за допомогою World Transformation
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\WorldTransformation_out.png");

Висновок

У двох словах, ви дізналися про різні трансформації, пов’язані з комп’ютерною графікою та формами. Ви повинні вміти розуміти деталі глобального, локального та світового перетворення за допомогою мови C#. Крім того, ви можете прочитати документацію API, щоб дізнатися більше, або зв’язатися з нами через безкоштовні форуми підтримки. Ми раді вам допомогти!

Дивись також