Files
docs-desktop/dotnet-desktop-guide/framework/winforms/advanced/how-to-rotate-reflect-and-skew-images.md
T
Andy De George c0ba284473 Initial winforms content migrated (#18)
* Merge winforms framework content to working branch (#14)

* Breadcrumb / TOC / Move net5 to net folder (#15)

* change path from net5 to net

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Mess with bread/toc

* Add .net 5 winforms placeholder article (#16)

* added some metadata and adjusted net5 placeholder

* corrections

* corrections

* corrections

* Test1

* Swapping landing page vs concept

* fix links

* Fix links

* Fix desc
2020-09-01 16:26:21 -07:00

2.9 KiB

title, ms.date, dev_langs, helpviewer_keywords, ms.assetid
title ms.date dev_langs helpviewer_keywords ms.assetid
How to: Rotate, Reflect, and Skew Images 03/30/2017
csharp
vb
images [Windows Forms], reflecting
images [Windows Forms], rotating
images [Windows Forms], skewing
a3bf97eb-63ed-425a-ba07-dcc65efb567c

How to: Rotate, Reflect, and Skew Images

You can rotate, reflect, and skew an image by specifying destination points for the upper-left, upper-right, and lower-left corners of the original image. The three destination points determine an affine transformation that maps the original rectangular image to a parallelogram.

Example

For example, suppose the original image is a rectangle with upper-left corner at (0, 0), upper-right corner at (100, 0), and lower-left corner at (0, 50). Now suppose you map those three points to destination points as follows.

Original point Destination point
Upper-left (0, 0) (200, 20)
Upper-right (100, 0) (110, 100)
Lower-left (0, 50) (250, 30)

The following illustration shows the original image and the image mapped to the parallelogram. The original image has been skewed, reflected, rotated, and translated. The x-axis along the top edge of the original image is mapped to the line that runs through (200, 20) and (110, 100). The y-axis along the left edge of the original image is mapped to the line that runs through (200, 20) and (250, 30).

The original image and the image mapped to the parallelogram.

The following illustration shows a similar transformation applied to a photographic image:

The picture of a climber and the picture mapped to the parallelogram.

The following illustration shows a similar transformation applied to a metafile:

Illustration of shapes and text and that mapped to the parallelogram.

The following example produces the images shown in the first illustration.

[!code-csharpSystem.Drawing.WorkingWithImages#61] [!code-vbSystem.Drawing.WorkingWithImages#61]

Compiling the Code

The preceding example is designed for use with Windows Forms, and it requires xref:System.Windows.Forms.PaintEventArgs e, which is a parameter of the xref:System.Windows.Forms.Control.Paint event handler. Make sure to replace Stripes.bmp with the path to an image that is valid on your system.

See also