画像の回転、反射、傾斜
元の画像の左上隅、右上隅、左下隅に対象の点を指定することで、画像を回転、反射、傾斜させることができます。 3 つの対象の点により、元の四角形の画像を平行四辺形にマップするアフィン変換が決定されます。 (元のイメージの右下隅は、指定された 3 つのターゲット ポイントから計算される平行四辺形の 4 番目のコーナーにマップされます)。
たとえば、元の画像が、左上隅が (0, 0)、右上隅が (100, 0)、左下隅が (0, 50) の四角形だとします。 次に、これらの 3 つのポイントを次のように目的地にマップするとします。
原点 | 対象の点 |
---|---|
左上 (0, 0) | (200, 20) |
右上 (100, 0) | (110, 100) |
左下 (0, 50) | (250, 30) |
次の図は、元の画像と、平行四辺形にマップされた画像を示しています。 元の画像は、傾斜され、反転され、回転され、平行移動されています。 元の画像の上端に沿った X 軸は、(200, 20) と (110, 100) を通る直線にマップされています。 元の画像の左端に沿った Y 軸は、(200, 20) と (250, 30) を通る直線にマップされています。
次の例では、前の図に示した画像を生成します。
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);
次の図は、写真画像に適用される同様の変換を示しています。
次の図は、メタファイルに適用される同様の変換を示しています。