旋转、反射和倾斜图像
可通过指定原始图像左上角、右上角和左下角的目标点来旋转、反射和倾斜图像。 这三个目标点确定了将原始矩形图像映射到平行四边形的仿射变换。 (原始图像的右下角映射到平行四边形的第四个角,该角是从三个指定目标点计算得出的。)
例如,假设原始图像是一个矩形,其左上角坐标为 (0, 0),右上角坐标为 (100, 0),左下角坐标为 (0, 50)。 现在,假设我们将这三个点映射到目标点,如下所示。
原点 | 目标点 |
---|---|
左上角 (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);
下图显示了应用于摄影图像的类似转换。
下图显示了应用于图元文件的类似转换。