Drehen, Spiegeln und Skewingen von Bildern

Sie können ein Bild drehen, spiegeln und neigen/scheren, indem Sie Zielpunkte für die obere linke, obere rechte und untere linke Ecke des Originalbilds angeben. Die drei Zielpunkte bestimmen eine affine Transformation, die das rechteckige Originalbild einem Parallelogramm zuordnet. (Die untere rechte Ecke des ursprünglichen Bilds wird der vierten Ecke des Parallelogramms zugeordnet, die aus den drei angegebenen Zielpunkten berechnet wird.)

Angenommen, das Originalbild ist ein Rechteck mit der oberen linken Ecke bei (0, 0), der oberen rechten Ecke bei (100, 0) und der unteren linken Ecke bei (0, 50). Angenommen, wir ordnen diese drei Punkte wie folgt Zielpunkten zu.

Ursprünglicher Punkt Zielpunkt
Oben links (0, 0) (200, 20)
Oben rechts (100, 0) (110, 100)
Unten links (0, 50) (250, 30)

 

Die folgende Abbildung zeigt das Originalbild und das dem Parallelogramm zugeordnete Bild. Das Originalbild wurde geneigt, gespiegelt, gedreht und eine Translation daran ausgeführt. Die X-Achse entlang des oberen Rands des Originalbilds wird der Linie zugeordnet, die durch (200, 20) und (110, 100) verläuft. Die Y-Achse entlang des linken Rands des Originalbilds wird der Linie zugeordnet, die durch (200, 20) und (250, 30) verläuft.

Abbildung, die farbige Streifen am Ursprung von Koordinatenachsen zeigt und dieselben Streifen schief und an einer anderen Position, Drehung und Größe

Im folgenden Beispiel werden die In der vorherigen Abbildung gezeigten Bilder erstellt.

Point destinationPoints[] = {
   Point(200, 20),   // destination for upper-left point of original
   Point(110, 100),  // destination for upper-right point of original
   Point(250, 30)};  // destination for lower-left point of original
Image image(L"Stripes.bmp");
// Draw the image unaltered with its upper-left corner at (0, 0).
graphics.DrawImage(&image, 0, 0);
// Draw the image mapped to the parallelogram.
graphics.DrawImage(&image, destinationPoints, 3); 

Die folgende Abbildung zeigt eine ähnliche Transformation, die auf ein fotografisches Bild angewendet wird.

Abbildung, die dasselbe Foto zweimal zeigt; die zweite ist umgekehrt, verzerrt und weist unterschiedliche Größe, Drehung und Position auf.

Die folgende Abbildung zeigt eine ähnliche Transformation, die auf eine Metadatei angewendet wird.

Abbildung mit Formen und Text, dann wieder umgekehrt, verzerrt und mit unterschiedlicher Position, Drehung und Größe