matrix-global-local-world-transformation

Při práci s grafikou a tvary jsou důležité souřadnicové systémy. Souřadnicovou osu lze otáčet pro získání nových os přes stejný počátek. Pojďme prozkoumat následující transformace včetně maticové, globální, místní a světové transformace pomocí jazyka C#. Kromě toho se prostřednictvím tohoto článku naučíme následující transformace:

Maticová, globální, lokální a světová transformace – instalace C# API

Aspose.Drawing for .NET API podporuje zpracování různých objektů výkresu. Ve svých aplikacích založených na .NET můžete snadno vytvářet, upravovat, transformovat nebo vykreslovat grafiku. Jednoduše si stáhněte soubor DLL ze sekce Nové zprávy. Na druhou stranu jej můžete nakonfigurovat z NuGet pomocí následujícího instalačního příkazu:

PM> Install-Package Aspose.Drawing

Aplikujte maticovou transformaci programově pomocí C#

Třída Matrix má afinní matici 3 x 3, která představuje transformaci. Můžete jej použít k otočení, přeložení nebo změně velikosti tvaru podle vašich požadavků. Následující kroky vysvětlují, jak aplikovat transformaci matice:

  1. Vytvořte instanci objektu třídy Bitmap
  2. Vytvořte tvar
  3. Použít maticovou transformaci

Níže uvedený kód ukazuje, jak programově použít transformaci matic pomocí jazyka C#:

// Inicializujte objekt třídy Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Deklarujte objekt třídy Graphics
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Iniciujte objekt třídy 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));

// Uložit výstupní obrázek pomocí maticové transformace
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);
}

Aplikujte transformaci globálních souřadnic programově s C#

Globální transformace se používá k transformaci všech grafických objektů ve výkresu. Při použití transformace globálních souřadnic můžete postupovat podle následujících kroků:

  1. Inicializujte instanci třídy Bitmap
  2. Deklarujte objekt třídy Graphics
  3. Nastavte rotaci
  4. Nakreslete tvar pomocí globální transformace

Následující kód zpracovává transformaci globálních souřadnic programově pomocí C#:

// Inicializujte objekt třídy Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Nastavte transformaci, která se použije pro každou nakreslenou položku:
graphics.RotateTransform(15);

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

// Uložit výstupní obrázek pomocí Glabal transformace
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\GlobalTransformation_out.png");

Programově nastavit místní transformaci v C#

Místní transformace souvisí s konkrétními tvary nebo grafikou ve výkresu. Lze to vysvětlit transformací grafické cesty, kde jsou transformovány pouze položky této cesty. Místní transformaci můžete nastavit pomocí následujících kroků:

  1. Inicializujte objekt třídy Bitmap
  2. Deklarujte objekt třídy Graphics a GraphicsPath
  3. Vytvořte tvar a definujte Matrix
  4. Call Transform metoda

Níže uvedený fragment kódu vysvětluje, jak programově nastavit místní transformaci pomocí C#:

// Inicializujte objekt třídy 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);

// Nastavte transformaci, která se vztahuje na konkrétní cestu, která se má nakreslit:
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);

// Uložit výstupní obrázek pomocí místní transformace
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\LocalTransformation_out.png");

Aplikujte World Transformation programově pomocí C#

Převod souřadnic světa na souřadnice stránky je známý jako transformace světa. Takové souřadnice stránky se pak používají pro vykreslování grafiky na různých zařízeních. Takže můžete použít transformaci světa pomocí C# pomocí následujících kroků:

  1. Inicializujte objekt třídy Bitmap
  2. Zavolejte metodu TranslateTransform
  3. Nakreslete tvar

Následující kód ukazuje, jak programově použít transformaci světa pomocí jazyka C#:

// Inicializujte objekt třídy Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Nastavte transformaci, která mapuje souřadnice světa na souřadnice stránky:
graphics.TranslateTransform(500, 400);

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

// Uložte výstupní obraz pomocí World Transformation
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\WorldTransformation_out.png");

Závěr

Stručně řečeno, dozvěděli jste se o různých transformacích souvisejících s počítačovou grafikou a tvary. Musíte být schopni porozumět detailům globální, lokální a světové transformace pomocí jazyka C#. Kromě toho si můžete přečíst dokumentaci API pro více podrobností nebo nás kontaktovat prostřednictvím Free Support Forums. Rádi vám pomůžeme!

Viz také