Microsoft 365 Rotation photo

José77

XLDnaute Occasionnel
Est il possible de faire effectuer une rotation de 90 degrés à une photo dans un userform ?
Si quelqu’un a un petit exemple je suis preneur.
Merci .
 

shinozak

XLDnaute Occasionnel
Bonjour, il faut passer par GDI

voici un exemple :

VB:
Option Explicit
Private O As ClgDi32
 
Private Sub UserForm_Initialize()
 
Set O = New ClgDi32
 
' Chargement d'une image de fond
O.OpenFile ThisDocument.Path & "\Baleineau.jpg"
' Affiche l'image
O.RepaintControl Me.Image0
 
End Sub
 
Private Sub CommandButton1_Click()
 
O.Rotate (90)
 
' Affiche l'image
O.RepaintControl Me.Image0
 
End Sub
 

José77

XLDnaute Occasionnel
Tout d’abord merci de m’avoir répondu aussi rapidement, mais j’ai un souci avec le programme.
J’obtiens une erreur au niveau du module de classe clGdi32. Dans la partie Énumérations Excel me dit: Gdi32SizeModeClip = acoLESizeClip
Erreur de compilation. Constante requise.
j’avoue qu’à ce niveau je n’ai pas les compétences, je n’y comprends rien.
 

patricktoulon

XLDnaute Barbatruc
re
je ne suis pas sur qu'il faut absolument passer par le module d'arkham pour faire une rotation d'une image
il y a plus simple
pourrait on avoir cette image SVP je vais tenter un truc simple
et peut etre meme le code du comment cette image atterrit dans ton userform serait un plus
 

patricktoulon

XLDnaute Barbatruc
bon j'ai tenté tout seul et je me suis pas trompé
demo7.gif

et voila le code qui suffit amplement
VB:
Sub rotate(x)
    Dim Img As Object, IP As Object, img1$, img2$
    img1 = ThisWorkbook.Path & "\Imgtemp.jpg"
    img2 = ThisWorkbook.Path & "\ImgR.jpg"

    SavePicture Image1.Picture, img1
    Set Img = CreateObject("WIA.ImageFile")    'Création conteneur pour l'image à manipuler
    Img.LoadFile ThisWorkbook.Path & "\Imgtemp.jpg"    'Chargement de l'image dans le conteneur
    Set IP = CreateObject("WIA.ImageProcess")    'Création du gestionnaire de filtre
    With IP.Filters
        .Add IP.FilterInfos("RotateFlip").FilterID
        .Item(1).Properties(1).Value = x
        Set Img = IP.Apply(Img)    'Application du filtre à l'image
    End With
    'Enregistre l'image redimensionnée
    Img.SaveFile img2
    Image1.Picture = LoadPicture(img2)
    Kill img1: Kill img2
End Sub

et son utilisation dans le userform fichier joint avec bouton pour pivoter 90/180 et bouton pour sauver l'image modifiée
 

Pièces jointes

  • rotate img WIA ON FORM patricktoulon.xlsm
    22.7 KB · Affichages: 31

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib