begin process at 2010 02 10 12:10:27
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > ROTATION D'UNE IMAGE EN SON CENTRE

ROTATION D'UNE IMAGE EN SON CENTRE


 Information sur la source

Note :
9,25 / 10 - par 8 personnes
9,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Source .NET ( DotNet ) Classé sous :rotation, image, centre Niveau :Débutant Date de création :15/08/2005 Vu / téléchargé :19 650 / 1 599

Auteur : ricounet

Ecrire un message privé
Site perso
Commentaire sur cette source (23)
Ajouter un commentaire et/ou une note

 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

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


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) TOOLBARRE DISCRETE ET RAPIDE VERSION 2 SANS API
Source avec Zip Source avec une capture Source .NET (Dotnet) RETOUCHE D'IMAGE - LE SECRET DE COLORMATRIX = TOUT POUR CORR...
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DES IMAGES - AJOUT DE LOGO TRANSPARENT, AJOUT DE COP...
Source avec Zip Source avec une capture OBSERVATION DU VENT EN TEMPS REEL (FICHIER METAR VENT PRESSI...
Source avec Zip Source avec une capture THUMBNAIL ABSOLUTE MAKER AVEC RECADRAGE

 Sources de la même categorie

Source avec Zip ALBUM PHOTOS par ayoube2009
Source avec Zip Source avec une capture EDITEUR D'AUTOMATES CELLULAIRES par PADYVEN
Source avec Zip Source avec une capture PROGRAMME DE DESSIN À LA SOURIS AVEC OUVERTURE ET ENREGISTRE... par SnkVrt
Source avec Zip Source avec une capture Source .NET (Dotnet) PHOTOSEXPRESS - TRAITEMENT DE PHOTOS par zozo14
Source avec Zip Source avec une capture ÉCRIRE SUR LE WALLPAPER par Rafale71

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PROGRAMME DE DESSIN À LA SOURIS AVEC OUVERTURE ET ENREGISTRE... par SnkVrt
Source avec Zip Source avec une capture ÉCRIRE SUR LE WALLPAPER par Rafale71
Source avec Zip Source avec une capture ROTATION IMAGE AVEC GDI+ (EXEMPLES ET QUESTIONS) par misterN
Source avec Zip Source .NET (Dotnet) REDIMENSIONNEMENT PAR LOT DE PHOTOS par grosbidou21
ROTATION GAUCHE-DROITE ET HAUT-BAS => EXACT par beeline

Commentaires et avis

Commentaire de scortex84 le 18/08/2005 18:50:23

Code simple et c'est les meilleurs !

Vraiment bien ! Bravo !

Seb.

Commentaire de cbu le 25/08/2005 16:10:06

#         'on efface
#         G.Clear(Me.BackColor)

pourquoi pas mettre
G.Clear(PictureBox1.BackColor) ?
car si on met ce petit code sympatoche dans un module le Me n'est pas autorisé ..

Commentaire de ricounet le 25/08/2005 19:18:34

Tout à fait d'accord !!!

Commentaire de olixelle le 11/10/2005 14:34:14

c pas tres bien codé qd mm.... mais ca ma bien aidé, merci :)

Commentaire de ricounet le 13/10/2005 15:59:31

Cher olixelle, c'est vrai que le code est moche, MAIS le but, c'était la formule de rotation et rien d'autre !

Commentaire de guyvdv le 08/02/2006 10:14:38

bonjour,
J cherche ou trouver le fichier de l image met j n ai pas trouve
Biensur je peut metre mon image a tourner, la oui je retrouve la trace dans la property du picturebox??
qui m aide.

Guy van der Velden

Commentaire de Xav88 le 22/03/2006 12:31:23

Bonjour,
Ton code est bien pratique...Mais quand je fait tourner une image carrée elle se retrouve rognée sur les angles. Quelqu'un a-t-il une solution à ce problème ?

Merci davance
Xav

Commentaire de ln23 le 15/06/2006 17:31:49

Bonjour,
Quelqu'un connaitrait-il un code similaire à celui-ci permettant la rotation d'image carrée sous vb6 ?
Merci d'avance!!!
LN...hyper débutante en fait...

Commentaire de winny68 le 12/08/2006 18:56:34

Bonjour,
Je tiens à te faire remarquer ricounet qu'il y a une faut dans ton code. Elle est toute petite et m'a fait perdre beaucoup de temps. Elle se trouve à la ligne 24. Il faut remplacer la valeur "Largeur" par "Hauteur" sinon l'image fait une rotation mais elle est rognée. D'ou le problème de Xav88.

Merci toute de même pour ce code très utile.

Commentaire de et1 le 01/09/2006 13:42:15

Bonjour,
Est-ce possible de pouvoir enregistrer l'image (ayant subit la rotation) ?
Merci.

Commentaire de rt15 le 12/09/2006 19:01:31 administrateur CS

Je connais pas le dotnet, mais bon, commme je passe par là, c'est l'occasion...

C'est peut être bien du MaPictureBox.Image.Save(...)

..., ça peut être pas mal de truc sympa apparement, mais une chaîne du nom du fichier suffit.

Tout est dans la msdn ! En français en plus.
http://msdn.microsoft.com/library/fre/default.asp

Commentaire de et1 le 12/09/2006 19:04:56

Non, PB.Image.save enregistree juste l'image, mais pas les graphiques.
Mais mon problème est réglé, j'ai trouvé la solution. Merci quand même.


www.et1-vb.net
Pleins de logiciels et codes-sources vb.net !

Commentaire de renator67 le 06/07/2007 18:43:15

Salut,

cette source est trés intéressante et correspondant a ce que je recherche, j'ai juste un petit soucis :

lorsque j'utilise ta source avec mon propre bmp, celui ci se retrouve déformer lors de la rotation !
As tu une idée de ce qui provoque cela ?

en tous cas, bravo.


Commentaire de gootsu le 10/07/2007 12:26:08

Ma question devrait etre simple! ;)

#        'on libère !
#        G.Dispose()

cela sert à quoi de libérer?

Commentaire de winny68 le 04/10/2007 15:01:09

-> GOOTSU

Cela sert à libérer la ressource employée par la variable 'Graphics'. Et donc libérer de la mémoire si je ne me trompe pas.

Commentaire de gillardg le 13/11/2008 12:49:38 8/10

merci pour ce code ,
juste une remarque :
Function Rotation(ByVal AngleDegre As Integer)

pourquoi une function puisque aucune valeur n'est renvoyée , il fallait donc utiliser un Sub !
8/10 pour la fonctionalité ( sais même pas si c'est dans le dico mais tant pis )

Commentaire de gillardg le 13/11/2008 12:53:42

je te propose de déposer ce code sur codyx si ce n'est déjà fait , voici la version corrigée telle que je la vois
    Sub Rotation(ByVal AngleDegre As Integer, ByVal picBox As PictureBox)

        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 Cote As Integer = picBox.Image.Width

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

        'définition de la picturebox comme espace de dessin
        G = picBox.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) * (Cote) * Math.Sin(Angle / 2) * Math.Cos(Math.PI / 4 + Angle / 2)
        Dim PosY As Single = -Math.Sqrt(2) * (Cote) * 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, Cote, Cote)

        'on libère !
        G.Dispose()

    End Sub

Commentaire de clowzer le 29/11/2008 01:04:32

ces coooooooooooooool vraiiiiment ton prog

Commentaire de clowzer le 30/11/2008 13:31:11

stp explique coment tu as devloppé les fonction deometrique pour prouver "posx"et"posy"
coment tu la fait?

Commentaire de ricounet le 01/12/2008 17:56:09

ben... j'ai fait de la géométrie !!!

Commentaire de ricounet le 01/12/2008 17:56:32

Monsieur gillardg, je suis d'accord !

Commentaire de Kite37 le 25/03/2009 10:49:31

Bonjour.

Ce morceau de code m'est très utile, mais j'ai beau essayer j'ai du mal a comprendre comment vous êtes arrivé a cette formule mathématique (notamment le sqrt(2) qui semble sortir de nul part)

Pourriez vous me l'expliquer le plus en détail possible? car je n'aime pas utiliser quelques chose que je ne comprend pas ^^

Cordialement,

KiTe

Commentaire de ricounet le 26/03/2009 11:29:58

ça fait 4000 ans que j'ai fais ce truc...
Alors si ça marche, c'est l'essentiel !!!!!!!!!!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

rotation d'une image dans un Picturebox [ par David ] Recherche solution pour effectuer une rotation dans un angle voulue d'image contenue par un PictureboxMerci d'avance **ROTATION D'UNE IMAGE** [ par Gabriel ] Bonjour,comment faire une rotation sur une image (pas seulement 90 degrés mais quelque chose comme 45 degrés, 67, 12, ...)MERCI URGENT : ROTATION D'IMAGE !!!! [ par penouille.51 ] Salut,J'ai absolument besoin de faire des rotations d'image (90°).Existe-t-il une commande rapide pour faire ca (sans être obligé de créer une nouvell Rotation d'image????? [ par fabrice88 ] est-il possible en vb de faire un rotation d'image???la question a déja été poser mais pas de reponses..:( rotation d'image dans un picture Box [ par tintin ] La question a déja été posée, mais aucune réponse efficace n'a été donnée. C'est pourquoi je me permet de reposer la question.J'ai essayer la solution Rotation rapide d'image dans picturebox [ par Anthomicro ] Bonjour,j'aimerais faire des rotations à l'angle voulu rapidement sur de grandes images ( 800 x 600 au moins )J'ai deja essaye PSC mais les codes ne f directx rotation d'une image en 2d [ par smoron ] Salut!j'affiche une image avec directx et j'aimerais pouvoir lui faire effectuer une rotation!j'ai cherché des codes mais en vain car tombant souvent Controle image avec rotation [ par domenico ] SalutJ'ai développé une application affichant un grand nombre d'image selon un angle donné.J'ai utilisé un code source de rotation d'image issu de vbf Rotation d'une image sous excel vba [ par bs51 ] BEBERT51Bjr je cherche un moyen d'effectuer une rotation d'une image sous excel ou par prog en vba.Par pas de 90° Merci Image visible par rotation [ par svinar ] Je cherche à faire qu'une image soit visible seulement en partie depuis le milieu(comme une aiguille de montre), pour que cette image fasse comme une


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales