matris-global-lokal-världsförvandling

Koordinatsystem är viktiga när man arbetar med grafik och former. Koordinataxeln kan roteras för att erhålla nya axlar genom samma origo. Låt oss utforska följande transformationer inklusive Matrix, Global, Local och World transformation med C#-språk. Låt oss dessutom lära oss följande transformationer genom den här artikeln:

Matrix, Global, Local och World Transformation – C# API-installation

Aspose.Drawing for .NET API stöder bearbetning av olika ritobjekt. Du kan enkelt skapa, redigera, transformera eller återge grafik i dina .NET-baserade applikationer. Ladda bara ner DLL-filen från avsnittet Nya utgåvor. Å andra sidan kan du konfigurera den från NuGet med följande installationskommando:

PM> Install-Package Aspose.Drawing

Tillämpa matristransformation programmatiskt med C#

Matrix-klassen har en 3 x 3 affin matris som representerar transformationen. Du kan använda den för att rotera, översätta eller skala en form enligt dina krav. Följande steg förklarar hur man tillämpar matristransformation:

  1. Instantiera klassobjektet Bitmap
  2. Skapa en form
  3. Tillämpa matristransformation

Koden nedan visar hur man applicerar matristransformation programmatiskt med C#-språket:

// Initiera Bitmap-klassobjekt
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Deklarera grafikklassobjekt
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Initiera Rectangle-klassobjekt
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));

// Spara utdatabild med Matrix-transformation
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);
}

Tillämpa global koordinattransformation programmatiskt med C#

Global transformation används för att transformera alla grafiska objekt i en ritning. Du kan följa stegen nedan för att tillämpa global koordinattransformation:

  1. Initiera en instans av Bitmap-klassen
  2. Deklarera klassobjektet Graphics
  3. Ställ in rotation
  4. Rita en form med Global Transformation

Följande kod utarbetar global koordinattransformation programmatiskt med C#:

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

// Ställ in en transformation som gäller för varje ritat objekt:
graphics.RotateTransform(15);

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

// Spara utdatabild med Glabal-transformation
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\GlobalTransformation_out.png");

Ställ in lokal transformation programmatiskt i C#

Lokal transformation är relaterad till specifika former eller grafik i en ritning. Det kan förklaras med transformation av en grafikbana där endast objekten i den banan transformeras. Du kan ställa in lokal transformation med följande steg:

  1. Initiera ett objekt av Bitmap-klassen
  2. Deklarera Graphics och klassobjektet GraphicsPath
  3. Skapa en form och definiera matris
  4. Call Transform metod

Kodavsnittet nedan förklarar hur du ställer in lokal transformation programmatiskt med C#:

// Initiera Bitmap-klassobjekt
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);

// Ställ in en transformation som gäller för den specifika vägen som ska ritas:
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);

// Spara utdatabild med lokal transformation
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\LocalTransformation_out.png");

Tillämpa världstransformation programmatiskt med C#

Omvandlingen av världskoordinater till sidkoordinater kallas för världstransformation. Sådana sidkoordinater används sedan för att rendera grafik på olika enheter. Så du kan tillämpa världsomvandling med C# med stegen nedan:

  1. Initiera ett objekt av klassen Bitmap
  2. Anropa metoden TranslateTransform
  3. Rita en form

Följande kod visar hur man tillämpar världstransformation programmatiskt med C#-språket:

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

// Ställ in transformationen som kartlägger världskoordinater till sidkoordinater:
graphics.TranslateTransform(500, 400);

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

// Spara utdatabild med World Transformation
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\WorldTransformation_out.png");

Slutsats

I ett nötskal har du lärt dig om olika transformationer relaterade till datorgrafik och former. Du måste kunna förstå detaljerna i global, lokal och världsomvandling med hjälp av C#-språket. Dessutom kan du läsa API-dokumentationen för mer information eller kontakta oss via Free Support Forums. Vi hjälper dig gärna!

Se även