Rotación, reflexión e imágenes de Skewing

Puede girar, reflejar y sesgar una imagen si especifica puntos de destino para las esquinas superior izquierda, superior derecha e inferior izquierda de la imagen original. Los tres puntos de destino determinan una transformación afín que asigna la imagen rectangular original a un paralelogramo. (La esquina inferior derecha de la imagen original se asigna a la cuarta esquina del paralelismo, que se calcula a partir de los tres puntos de destino especificados).

Por ejemplo, supongamos que la imagen original es un rectángulo con la esquina superior izquierda en (0, 0), la esquina superior derecha en (100, 0) y esquina inferior izquierda en (0, 50). Ahora supongamos que asignamos esos tres puntos a los puntos de destino de la siguiente manera.

Punto original Punto de destino
Superior izquierdo (0, 0) (200, 20)
Superior derecho (100, 0) (110, 100)
Inferior izquierdo (0, 50) (250, 30)

 

En la ilustración siguiente se muestra la imagen original y la imagen asignada al paralelogramo. La imagen original se ha sesgado, reflejado, girado y trasladado. El eje X a lo largo del borde superior de la imagen original se ha asignado a la línea que va de (200, 20) a (110, 100). El eje Y a lo largo del borde izquierdo de la imagen original se ha asignado a la línea que va de (200, 20) a (250, 30).

Ilustración en la que se muestran franjas coloreados en el origen de ejes de coordenadas y las mismas franjas sesgadas y en una ubicación, rotación y tamaño diferentes

En el ejemplo siguiente se generan las imágenes que se muestran en la ilustración anterior.

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); 

En la ilustración siguiente se muestra una transformación similar aplicada a una imagen fotográfica.

ilustración que muestra la misma foto dos veces; el segundo se invierte, sesgado y tiene un tamaño, rotación y ubicación diferentes.

En la ilustración siguiente se muestra una transformación similar aplicada a un metarchivo.

ilustración en la que se muestran las formas y el texto, de nuevo, pero invertidos, sesgados y con una ubicación, rotación y tamaño diferentes