Aracılığıyla paylaş


Nasıl yapılır: Görüntüleri Döndürme, Yansıtma ve Eğme

Özgün resmin sol üst, sağ üst ve sol alt köşeleri için hedef noktaları belirterek görüntüyü döndürebilir, yansıtabilir ve eğebilirsiniz. Üç hedef noktası, özgün dikdörtgen görüntüyü paralelkenara dönüştüren bir afin dönüşümünü belirler.

Örnek

Örneğin, özgün görüntünün sol üst köşesi (0, 0), sağ üst köşesi (100, 0) ve sol alt köşesi (0, 50) olan bir dikdörtgen olduğunu varsayalım. Şimdi bu üç noktayı aşağıdaki gibi hedef noktalara eşlediğiniz varsayın.

Özgün nokta Hedef noktası
Sol üst (0, 0) (200, 20)
Sağ üst (100, 0) (110, 100)
Sol alt (0, 50) (250, 30)

Aşağıdaki çizimde özgün görüntü ve paralelkenarla eşlenen görüntü gösterilmektedir. Özgün görüntü eğilmiş, yansıtılmış, döndürülmüş ve çevrilmiştir. Özgün görüntünün üst kenarı boyunca uzanan x ekseni, (200, 20) ve (110, 100) noktalarından geçen doğru ile eşleştirilir. Özgün görüntünün sol kenarı boyunca y ekseni, (200, 20) ve (250, 30) arasında uzanan çizgiyle haritalanır.

Özgün görüntü ve paralelkenarla eşlenen görüntü.

Aşağıdaki çizimde, bir fotoğraf görüntüsüne uygulanan benzer bir dönüşüm gösterilmektedir:

Bir tırmanıcının resmi ve paralelkenarla eşlenmiş resim.

Aşağıdaki çizimde, meta dosyaya uygulanan benzer bir dönüştürme gösterilmektedir:

Paralelkenarla eşlenen şekillerin ve metnin çizimi.

Aşağıdaki örnek, ilk çizimde gösterilen görüntüleri oluşturur.

    Point[] destinationPoints = {
new Point(200, 20),   // destination for upper-left point of
                      // original
new Point(110, 100),  // destination for upper-right point of
                      // original
new Point(250, 30)};  // destination for lower-left point of
    // original

    Image image = new Bitmap("Stripes.bmp");

    // Draw the image unaltered with its upper-left corner at (0, 0).
    e.Graphics.DrawImage(image, 0, 0);

    // Draw the image mapped to the parallelogram.
    e.Graphics.DrawImage(image, destinationPoints);
' New Point(200, 20)  = destination for upper-left point of original
' New Point(110, 100) = destination for upper-right point of original
' New Point(250, 30)  = destination for lower-left point of original
Dim destinationPoints As Point() = { _
    New Point(200, 20), _
    New Point(110, 100), _
    New Point(250, 30)}

Dim image As New Bitmap("Stripes.bmp")

' Draw the image unaltered with its upper-left corner at (0, 0).
e.Graphics.DrawImage(image, 0, 0)

' Draw the image mapped to the parallelogram.
e.Graphics.DrawImage(image, destinationPoints)

Kodu Derleme

Yukarıdaki örnek, Windows Forms ile kullanılmak üzere tasarlanmıştır ve PaintEventArgs olay işleyicisinin bir parametresi olan ePaintgerektirir. yerine Stripes.bmp sisteminizde geçerli olan bir görüntünün yolunu belirttiğinizden emin olun.

Ayrıca bakınız