macierz-globalna-lokalna-transformacja-swiata

Układy współrzędnych są ważne podczas pracy z grafiką i kształtami. Oś współrzędnych można obracać, aby uzyskać nowe osie przechodzące przez ten sam początek. Przyjrzyjmy się następującym przekształceniom, w tym transformacji Matrix, Global, Local i World przy użyciu języka C#. Co więcej, poznajmy następujące przekształcenia z tego artykułu:

Transformacja Matrix, Globalna, Lokalna i Światowa – Instalacja C# API

Aspose.Drawing for .NET API obsługuje przetwarzanie różnych obiektów rysunkowych. Możesz łatwo tworzyć, edytować, przekształcać lub renderować grafikę w aplikacjach opartych na platformie .NET. Wystarczy pobrać plik DLL z sekcji Nowe wydania. Z drugiej strony możesz skonfigurować go z NuGet za pomocą następującego polecenia instalacji:

PM> Install-Package Aspose.Drawing

Zastosuj programowo transformację macierzy przy użyciu języka C#

Klasa Matrix ma macierz afiniczną 3 na 3, która reprezentuje transformację. Możesz go użyć do obracania, tłumaczenia lub skalowania kształtu zgodnie z własnymi wymaganiami. Poniższe kroki wyjaśniają, jak zastosować przekształcenie macierzowe:

  1. Utwórz instancję obiektu klasy Bitmap.
  2. Utwórz kształt
  3. Zastosuj transformację Matrix

Poniższy kod pokazuje, jak programowo zastosować transformację macierzy przy użyciu języka C#:

// Zainicjuj obiekt klasy Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Zadeklaruj obiekt klasy Graphics
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Zainicjuj obiekt klasy 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));

// Zapisz obraz wyjściowy z transformacją Matrix
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);
}

Zastosuj globalną transformację współrzędnych programowo za pomocą C#

Transformacja globalna służy do przekształcania wszystkich obiektów graficznych na rysunku. Możesz wykonać poniższe kroki, aby zastosować globalną transformację współrzędnych:

  1. Zainicjuj instancję klasy Bitmap
  2. Zadeklaruj obiekt klasy Graphics.
  3. Ustaw obrót
  4. Narysuj kształt za pomocą Globalnej transformacji

Poniższy kod opracowuje globalną transformację współrzędnych programowo przy użyciu języka C#:

// Zainicjuj obiekt klasy Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Ustaw transformację, która ma zastosowanie do każdego narysowanego elementu:
graphics.RotateTransform(15);

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

// Zapisz obraz wyjściowy za pomocą transformacji Glabal
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\GlobalTransformation_out.png");

Programowo ustaw lokalną transformację w C#

Transformacja lokalna jest związana z określonymi kształtami lub grafiką na rysunku. Można to wytłumaczyć transformacją ścieżki graficznej, w której transformowane są tylko elementy tej ścieżki. Możesz ustawić lokalną transformację, wykonując następujące czynności:

  1. Zainicjuj obiekt klasy Bitmap
  2. Zadeklaruj obiekt klasy Graphics i GraphicsPath.
  3. Utwórz kształt i zdefiniuj Matrix
  4. Wywołaj metodę Transform

Poniższy fragment kodu wyjaśnia, jak programowo ustawić transformację lokalną przy użyciu języka C#:

// Zainicjuj obiekt klasy 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);

// Ustaw transformację, która ma zastosowanie do określonej ścieżki do narysowania:
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);

// Zapisz obraz wyjściowy za pomocą transformacji lokalnej
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\LocalTransformation_out.png");

Zastosuj programową transformację świata przy użyciu języka C#

Konwersja współrzędnych świata na współrzędne strony jest znana jako transformacja świata. Takie współrzędne strony są następnie wykorzystywane do renderowania grafiki na różnych urządzeniach. Możesz więc zastosować transformację świata za pomocą C#, wykonując poniższe czynności:

  1. Zainicjuj obiekt klasy Bitmap
  2. Wywołaj metodę TranslateTransform.
  3. Narysuj kształt

Poniższy kod pokazuje, jak programowo zastosować transformację świata przy użyciu języka C#:

// Zainicjuj obiekt klasy Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Ustaw transformację, która odwzorowuje współrzędne świata na współrzędne strony:
graphics.TranslateTransform(500, 400);

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

// Zapisz obraz wyjściowy za pomocą World Transformation
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\WorldTransformation_out.png");

Wniosek

Krótko mówiąc, poznałeś różne przekształcenia związane z grafiką komputerową i kształtami. Musisz być w stanie zrozumieć szczegóły transformacji globalnej, lokalnej i światowej za pomocą języka C#. Ponadto możesz przeczytać Dokumentację interfejsu API, aby uzyskać więcej informacji lub skontaktować się z nami za pośrednictwem Bezpłatnych forów pomocy technicznej. Z przyjemnością Ci pomożemy!

Zobacz też