.Net GDI+
[40 mn de lecture - paru le 4/15/2004 4:43:05 PM - Public : Confirmé]
|
   
|
Auteur
5. Pivoter l'image
5.1. Rotation et Flip
La rotation est une opération commune dans beaucoup de programmes d'Image. La rotation tourne une image sous un angle qui est un multiple de 90. Un Flip reflète une image sur un axe. La méthode de RotateFlip nous permet de tourner et renverser des images. La valeur de RotateFlip est de l'énumération de RotateFlipType , qui définit la direction de la rotation et du Flip. Pour tourner et/ou renverser une image, un appel RotateFlip suffit.
Grâce à la méthode RotateFlip vous pourrez exécuter des rotations de 90,180 et 270 degrés. Mais aussi de effet Miroir(Flip).Le tableau ci-dessous dénombre les membres de la méthode RotateFlip. Il est facile comprendre les membres de l'énumération de RotateFlipType :
Member |
Description |
Rotate180FlipNone |
rotation180-degrés mais sans Flip |
Rotate180FlipX |
rotation 180-degrés avec flip horizontal |
Rotate180FlipXY |
rotation 180-degrés avec flip horizontal et vertical |
Rotate180FlipY |
rotation180-degrés avec flip vertical |
Rotate270FlipNone |
rotation270-degrés sans flip |
Rotate270FlipX |
rotation270-degrés avec flip horizontal |
Rotate270FlipXY |
rotation270-degrés avec flip horizontal et vertical |
Rotate270FlipY |
rotation270-degrés avec flip vertical |
Rotate90FlipNone |
rotation90-degrés sans flip |
Rotate90FlipX |
rotation90-degrés avec flip horizontal |
Rotate90FlipXY |
rotation90-degrés avec flip horizontal et vertical |
Rotate90FlipY |
rotation90-degrés avec flip vertical |
RotateNoneFlipNone |
Pas rotation and sans flip |
RotateNoneFlipX |
Pas rotation, avec flip horizontal |
RotateNoneFlipXY |
Pas rotation, avec flip horizontal et vertical |
RotateNoneFlipY |
Pas rotation, avec flip vertical |
Nous allons prendre que les membres qui peuvent être intéressant 90 degrés droite et gauche ainsi qu'un effet miroir pour constitué une méthode Rotation :
/// <summary>
/// Rotation de l'image
/// </summary>
public void rotation(int angleDeRotation)
{
switch(angleDeRotation)
{
case 90 : theImage.RotateFlip(RotateFlipType.Rotate90FlipXY); break;
case 180 : theImage.RotateFlip(RotateFlipType.Rotate270FlipXY); break;
default : theImage.RotateFlip(RotateFlipType.RotateNoneFlipX); break;
}
}
5.2. Faux effet 3D
J'appel cette méthode fausse 3D car je déforme l'image en 3 points dans l'espace
/// <summary>
/// Fausse 3D
/// </summary>
public void fausse3D()
{
Point[] pts =
{
new Point(65, 65),// point crée avec X et Y
new Point(300, 0),
new Point(400, 400)
};
// créer la nouvelle image dans laquelle on va faire le traitement
Bitmap tempImage = new Bitmap( monImage.Width,
monImage.Height, monImage.PixelFormat);
Graphics g = Graphics.FromImage(tempImage);
// couleur de fond
g.Clear(System.Drawing.Color.White);
// exécutions de l'effet
g.DrawImage(monImage,
pts);
// on libére les ressources
g.Dispose();
monImage.Dispose();
// on attribut la nouvelle image dans celle d'origine
monImage = tempImage;
}
5.3. Appel de la méthode de rotation
private void rotation1_Click(object sender, System.EventArgs e)
{
String path = ImageButton1.ImageUrl.Replace("file:///","").ToString();
// instanciation de la classe traitementImage
traitementImage monImage = new traitementImage();
// chargement de l'image
monImage.chargementImage(path);
// on appel la méthode et on passe en parametre soit 90,180 ou 0
monImage.rotation(90);
String nouveaNom = Server.MapPath(Request.ApplicationPath) + "/miniaturePhoto.JPG";
// enregistrement de l'image sous un nouveau nom
monImage.SaveImageAs(nouveaNom);
// on recharge l'image dans la page
Imagebutton2.ImageUrl = Server.MapPath(Request.ApplicationPath) + "/miniaturePhoto.JPG";
}
| ORIGINALE |
FLIP |
90 Gauche |
90 Droite |
 |
 |
 |
 |
5.4. Appel à la méthode Fausse 3D
private void rotation1_Click(object sender, System.EventArgs e)
{
String path = ImageButton1.ImageUrl.Replace("file:///","").ToString();
// instanciation de la classe traitementImage
traitementImage monImage = new traitementImage();
// chargement de l'image
monImage.chargementImage(path);
// on appel la méthode fausse 3D
monImage.fausse3D();
String nouveaNom = Server.MapPath(Request.ApplicationPath) + "/miniaturePhoto.JPG";
// enregistrement de l'image sous un nouveau nom
monImage.SaveImageAs(nouveaNom);
// on recharge l'image dans la page
Imagebutton2.ImageUrl = Server.MapPath(Request.ApplicationPath) + "/miniaturePhoto.JPG";
}
| ORIGINALE |
DEFORMEE |
 |
 |
|