Rotation d'une image en son centre

4/5 (28 avis)

Vue 35 288 fois - Téléchargée 2 481 fois

Description

la fonction G.RotateTransform est très pratique pour faire tourner une image mais a le defaut d'utiliser le coin supérieur gauche de l'image que l'on veut faire tourner. Moi, je veux faire tourner l'image par rapport à son centre. Donc, je me replonge dans mes cours de géométrie, et voilà comment on fait tourner une image par rapport à son centre.

Source / Exemple :


Function Rotation(ByVal AngleDegre As Integer)

        Dim G As Graphics

        'on mémorise la longueur de l'image
        'je pars de l'hypothèse que j'utilise une image carré
        Dim Largeur As Integer = PictureBox1.Image.Width
        Dim Hauteur As Integer = PictureBox1.Image.Height

        'on mémorise l'image présente dans la picture box
        Dim IMG = PictureBox1.Image

        'définition de la picturebox comme espace de dessin
        G = PictureBox1.CreateGraphics()

        'on efface 
        G.Clear(Me.BackColor)

        'on transforme l'angle en radians
        Dim Angle As Double = AngleDegre / 180 * Math.PI

        'on calcule les nouvelles coord X et Y de l'image 
        Dim PosX As Single = Math.Sqrt(2) * (Largeur) * Math.Sin(Angle / 2) * Math.Cos(Math.PI / 4 + Angle / 2)
        Dim PosY As Single = -Math.Sqrt(2) * (Largeur) * Math.Sin(Angle / 2) * Math.Cos(Math.PI / 4 - Angle / 2)

        'on fait la rotation
        G.RotateTransform(AngleDegre)

        'on dessine l'image rotée aux nouvelles coordonnées
        G.DrawImage(IMG, PosX, PosY, Largeur, Hauteur)

        'on libère !
        G.Dispose()

    End Function

Codes Sources

A voir également

Ajouter un commentaire Commentaires
guilleto Messages postés 256 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 20 mars 2013 1
6 déc. 2010 à 09:22
Bonjour à toutes et tous,

Je voudrais savoir si sur un PictureBox utilisant déjà le système de G en tant que Graphics il est possible d'ajouter du texte incliné à N ° ?

Si oui, Comment fait-on cela ?

Par avance merci

Olivier
VincGold Messages postés 2 Date d'inscription dimanche 8 octobre 2006 Statut Membre Dernière intervention 28 septembre 2010
28 sept. 2010 à 07:35
Le code fonctionne bien seulement quand l'image est en mode "Normal", savez vous comment faire si l'image est en mode "Zoom"...?...
Car lors de la rotation elle redeviens en mode "Original"...

En tout cas merci pour ce code qui m'est d'une très grande utilitée...
jambonlol2 Messages postés 2 Date d'inscription lundi 14 juin 2010 Statut Membre Dernière intervention 16 juin 2010
16 juin 2010 à 12:14
De plus j'ai mis un timer pour la faire tourner plusieurs fois et l'image ne tourne qu'une fois
jambonlol2 Messages postés 2 Date d'inscription lundi 14 juin 2010 Statut Membre Dernière intervention 16 juin 2010
16 juin 2010 à 12:13
Pour moi cela ne marche pas même avec le code corrigé, je cherche a tourner une image de 45° (des formes gémotriques) et cela me rogne l'image et la tourne de 180°...
fred888897 Messages postés 2 Date d'inscription jeudi 28 septembre 2006 Statut Membre Dernière intervention 7 avril 2010
7 avril 2010 à 21:39
Très utile et malin, merci pour l'info.
Afficher les 28 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.