|
Bitmap Operations: Rotating a Picture |
|
|
Rotating a picture consists of changing its angular
orientation. The Image class supports this operation (with somewhat
limited options) through its RotateFlip() method. As mentioned for
mirroring and flipping, the value you pass as argument would determine how
the operation is carried out.
|
The members of the RotateFlipType enumeration
that are used to rotate a picture are:
- RotateNoneFlipNone: Nothing would happen
- Rotate90FlipNone: The picture is rotated at 90° clockwise.
As a result, after calling the method with this member, what is on the
left of the original picture would be positioned in the top section of
the picture. Here is an example:
Original |
|
After Calling the Method |
|
=> |
|
Notice that, after the method has
been called, the person is still holding the remote control
with his right hand. Here is an example:
System::Void Mirror_Paint(System::Object ^ sender,
System::Windows::Forms::PaintEventArgs ^ e)
{
Bitmap ^ bmpPicture = gcnew Bitmap(L"person1.gif");
bmpPicture->RotateFlip(RotateFlipType::Rotate90FlipNone);
e->Graphics->DrawImage(bmpPicture, 10, 10);
}
|
- Rotate180FlipNone: The picture is rotated at 90° clockwise
twice. This means that the picture is first rotated at 90°, then
rotated again at 90°. As a result, after calling the method with this
member, what is on the left of the original picture would be
positioned in the right section but what is on the top would be
positioned to the bottom of the picture. Here is an example:
Original |
|
After Calling the Method |
|
|
|
Notice that, after the method has
been called, the person is still holding the remote control
with his right hand. As a result, the remote control is on
opposite sites of the pictures, indicating that it is the same
hand. You can get the same result by calling the method
twice with the Rotate90FlipNone member each time:
System::Void Mirror_Paint(System::Object ^ sender,
System::Windows::Forms::PaintEventArgs ^ e)
{
Bitmap ^ bmpPicture = gcnew Bitmap(L"person1.gif");
bmpPicture->RotateFlip(RotateFlipType::Rotate90FlipNone);
bmpPicture->RotateFlip(RotateFlipType::Rotate90FlipNone);
e->Graphics->DrawImage(bmpPicture, 10, 10);
}
|
- Rotate270FlipNone: The picture is rotated at 90° clockwise
three times. This means that the picture is first rotated at 90°, then
rotated again at 90°, and then rotated again at 90°. Here is an
example:
Original |
|
After Calling the Method |
|
=> |
|
Notice that, after the method has
been called, the person is still holding the remote control
with his right hand. You can get the same result by calling
the method three times with the Rotate90FlipNone member
each time:
System::Void Mirror_Paint(System::Object ^ sender,
System::Windows::Forms::PaintEventArgs ^ e)
{
Bitmap ^ bmpPicture = gcnew Bitmap(L"person1.gif");
bmpPicture->RotateFlip(RotateFlipType::Rotate90FlipNone);
bmpPicture->RotateFlip(RotateFlipType::Rotate90FlipNone);
bmpPicture->RotateFlip(RotateFlipType::Rotate90FlipNone);
e->Graphics->DrawImage(bmpPicture, 10, 10);
}
|
- Rotate180FlipXY: No real change. Actually, the picture is
rotated at 90° four times and then gets back to its original
orientation and position:
Original |
|
After Calling the Method |
|
- Rotate90FlipX: The picture is mirrored, then rotated at 90°
counterclockwise (or rotated at 90° counterclockwise then mirrored):
Original |
|
After Calling the Method |
|
=> |
|
Notice that, after the method has
been called, the person is now holding the remote control with
his left hand |
- Rotate180FlipX: The picture is mirrored, then rotated at
180° counterclockwise twice (or rotated at 180° counterclockwise twice
then mirrored):
Original |
|
After Calling the Method |
|
Notice that, after the method has
been called, the person is now holding the remote control with
his left hand. As a consequence, the remote control is on the
same side of the screen on both pictures (compare with
Rotate180FlipNone) |
- Rotate270FlipX: The picture is mirrored, then rotated at
90° counterclockwise three times (or rotated at 90° counterclockwise
three times then mirrored):
Original |
|
After Calling the Method |
|
=> |
|
Notice that, after the method has
been called, the person is now holding the remote control with
his left hand |
- Rotate90FlipY: Produces the same result as
Rotate270FlipX
- Rotate270FlipY: Produces the same result as
Rotate90FlipX
- Rotate90FlipXY: Produces the same result as
Rotate270FlipNone
- Rotate270FlipXY: Produces the same result as
Rotate90FlipNone
- RotateNoneFlipXY: Produces the same result as
Rotate180FlipNone
|
|