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
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.