旋轉、反映和扭曲影像

您可以藉由指定原始影像左上角、右上角和左下角的目的地點來旋轉、反映和扭曲影像。 三個目的地點會決定將原始矩形影像對應至平行投影的模擬轉換。 (原始影像的右下角會對應至平行投影的第四個角落,這是從三個指定的目的地點計算而來。)

例如,假設原始影像是左上角 (0、0) 、右上角 (100、0) ,以及左下角 (0、50) 。 現在假設我們將這三個點對應至目的地點,如下所示。

原始點 目的地點
左上方 (0,0) (200, 20)
右上方 (100、0) (110, 100)
左下 (0、50) (250, 30)

 

下圖顯示原始影像和對應至平行投影的影像。 原始影像已扭曲、反映、旋轉及翻譯。 沿著原始影像上邊緣的 X 軸會對應至透過 (200、20) 20、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); 

下圖顯示套用至相片影像的類似轉換。

顯示相同相片兩次的圖例;第二個是反轉、扭曲,且大小、旋轉和位置不同

下圖顯示套用至中繼檔的類似轉換。

顯示圖形和文字的圖例,然後再次反轉、扭曲,以及具有不同位置、旋轉和大小