Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können ein Bild drehen, spiegeln und verzerren, indem Sie Zielpunkte für die oberen linken, oberen rechten und unteren linken Ecken des Originalbilds angeben. Die drei Zielpunkte bestimmen eine affine Transformation, die das ursprüngliche rechteckige Bild einem Parallelogramm zuordnet.
Beispiel
Angenommen, das ursprüngliche Bild ist ein Rechteck mit der oberen linken Ecke (0, 0), der oberen rechten Ecke (100, 0) und der unteren linken Ecke bei (0, 50). Angenommen, Sie ordnen diese drei Punkte den Zielpunkten wie folgt 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 originale Bild und das Bild, das dem Parallelogramm zugeordnet ist. Das Originalbild wurde verzerrt, reflektiert, gedreht und übersetzt. 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.
Die folgende Abbildung zeigt eine ähnliche Transformation, die auf ein fotografisches Bild angewendet wird:
Die folgende Abbildung zeigt eine ähnliche Transformation, die auf eine Metadatei angewendet wird:
Im folgenden Beispiel werden die in der ersten Abbildung gezeigten Bilder erzeugt.
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)
Code kompilieren
Das vorangehende Beispiel wurde für die Verwendung mit Windows Forms entwickelt und erfordert PaintEventArgse
, bei dem es sich um einen Parameter des Paint-Ereignishandlers handelt. Stellen Sie sicher, dass Sie Stripes.bmp
durch den Pfad zu einem Bild ersetzen, das auf Ihrem System gültig ist.
Siehe auch
.NET Desktop feedback