matrix-global-yerel-dünya-dönüşüm

Grafikler ve şekillerle çalışırken koordinat sistemleri önemlidir. Aynı orijinden yeni eksenler elde etmek için koordinat ekseni döndürülebilir. C# dilini kullanarak Matrix, Global, Local ve World dönüşümü dahil olmak üzere aşağıdaki dönüşümleri inceleyelim. Ayrıca aşağıdaki dönüşümleri de bu yazı üzerinden öğrenelim:

Matrix, Global, Yerel ve Dünya Dönüşümü – C# API Kurulumu

Aspose.Drawing for .NET API, farklı çizim nesnelerinin işlenmesini destekler. .NET tabanlı uygulamalarınızda kolayca grafik oluşturabilir, düzenleyebilir, dönüştürebilir veya işleyebilirsiniz. DLL dosyasını Yeni Çıkanlar bölümünden indirmeniz yeterlidir. Öte yandan, aşağıdaki kurulum komutuyla NuGet’ten yapılandırabilirsiniz:

PM> Install-Package Aspose.Drawing

C# kullanarak Matris Dönüşümünü Programlı Olarak Uygulayın

Matrix sınıfı, dönüşümü temsil eden 3’e 3 afin matrise sahiptir. Bir şekli gereksinimlerinize göre Döndürmek, Çevirmek veya Ölçeklemek için kullanabilirsiniz. Aşağıdaki adımlarda matris dönüşümünün nasıl uygulanacağı açıklanmaktadır:

  1. Bitmap sınıf nesnesini somutlaştırın
  2. şekil oluştur
  3. Matris dönüşümünü uygula

Aşağıdaki kod, matris dönüşümünün C# dilini kullanarak programlı olarak nasıl uygulanacağını gösterir:

// Bitmap sınıf nesnesini başlat
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Graphics sınıf nesnesini bildir
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Rectangle sınıf nesnesini başlat
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));

// Çıktı görüntüsünü Matrix dönüşümü ile kaydedin
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# ile Global Koordinat Dönüşümünü Programlı Olarak Uygulayın

Global dönüşüm, bir çizimdeki tüm grafik nesneleri dönüştürmek için kullanılır. Global koordinat dönüşümünü uygulamak için aşağıdaki adımları takip edebilirsiniz:

  1. Bitmap sınıfının bir örneğini başlat
  2. Graphics sınıf nesnesini bildirin
  3. Dönüşü ayarla
  4. Küresel Dönüşüm ile bir şekil çizin

Aşağıdaki kod, C# kullanarak programlı olarak küresel koordinat dönüşümünü detaylandırır:

// Bitmap sınıf nesnesini başlat
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Çizilen her öğeye uygulanan bir dönüşüm belirleyin:
graphics.RotateTransform(15);

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

// Çıktı görüntüsünü Glabal dönüşümü ile kaydet
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\GlobalTransformation_out.png");

Yerel Dönüşümü C#’ta Programlı Olarak Ayarlayın

Yerel dönüşüm, bir çizimdeki belirli şekiller veya grafiklerle ilgilidir. Sadece o yolun öğelerinin dönüştürüldüğü bir grafik yolunun dönüştürülmesi ile açıklanabilir. Yerel dönüşümü aşağıdaki adımlarla ayarlayabilirsiniz:

  1. Bitmap sınıfının bir nesnesini başlat
  2. Graphics ve GraphicsPath sınıf nesnesini bildirin
  3. Bir şekil oluşturun ve Matrix’i tanımlayın
  4. Çağrı Dönüşümü yöntemi

Aşağıdaki kod parçacığı, yerel dönüşümün C# kullanarak programlı olarak nasıl ayarlanacağını açıklar:

// Bitmap sınıf nesnesini başlat
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);

// Çizilecek belirli yol için geçerli olan bir dönüştürme ayarlayın:
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);

// Çıktı görüntüsünü Yerel dönüştürme ile kaydet
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\LocalTransformation_out.png");

C# kullanarak Programlı Olarak Dünya Dönüşümünü Uygulayın

Dünya koordinatlarının Sayfa koordinatlarına dönüştürülmesi Dünya Dönüşümü olarak bilinir. Bu tür sayfa koordinatları daha sonra grafikleri farklı cihazlarda işlemek için kullanılır. Böylece aşağıdaki adımlarla C# kullanarak dünya dönüşümünü uygulayabilirsiniz:

  1. Bitmap sınıfının bir nesnesini başlat
  2. TranslateTransform yöntemini çağırın
  3. şekil çiz

Aşağıdaki kod, dünya dönüşümünün C# dilini kullanarak programlı olarak nasıl uygulanacağını gösterir:

// Bitmap sınıf nesnesini başlat
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Dünya koordinatlarını sayfa koordinatlarına eşleyen dönüşümü ayarlayın:
graphics.TranslateTransform(500, 400);

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

// Çıktı görüntüsünü World Transformation ile kaydedin
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\WorldTransformation_out.png");

Çözüm

Özetle, bilgisayar grafikleri ve şekilleri ile ilgili farklı dönüşümleri öğrendiniz. C# dilini kullanarak Küresel, Yerel ve Dünya dönüşümünün ayrıntılarını anlayabilmelisiniz. Ayrıca, daha fazla ayrıntı için API Belgelerini okuyabilir veya Ücretsiz Destek Forumları aracılığıyla bizimle iletişime geçebilirsiniz. Size yardım etmeyi çok isteriz!

Ayrıca bakınız