Bonjour , j'ai regardé sur le net ce qui etait proposé pour faire pivoter une image mais tout est HYPER COMPLIQUE ...... et tiens 1 page A4 de code...... Ya rien de plus simple pour faire cette rotation ??
merci d'avance
amicalement lucas
Bonjour , j'ai regardé sur le net ce qui etait proposé pour faire pivoter une image mais tout est HYPER COMPLIQUE ...... et tiens 1 page A4 de code...... Ya rien de plus simple pour faire cette rotation ??
merci d'avance
amicalement lucas
La rotation d'une image n'est en effet pas quelque-chose de simple !
Si une page de code te fait peur, alors oublie (la baguette magique n'existe pas)![]()
On peut pas faire pivoter une image en moins d'une page de code ???????????
Dans ce cas la , je vais poster le code que j'ai trouver , mais faut que je change plein de truc car ils utilisent tous des Picture box et non des Image![]()
Un code ne se mesure pas en pages mais en teneur et en intelligence de sa teneur... puis en temps d'exécution (bien évidemment).
Ceci étant dit !
Tu peux toujours traiter pixel par pixel et utiliser la méthode PaintPicture (aide en ligne)
Ce ne seront que des "déplacements" arithmétiques élémentaires ! Et ce sera très lent à l'exécution, voilà !
C'est là mon dernier message sur ce sujet !
et poum, y'en a un qui vient de se mettre jfmarques sur le dos :p
pour repondre a ta question Lucas, j'ai deja vu la complexite du code pour faire du redimentionnement d'image, donc j'imagine meme pas la complexite et la prise de tete que ca doit etre pour faire une rotation .
je te souhaite bien du courage ^^
Non, Riesseg, rien n'est si difficile que ça pour qui veut réellement se mettre au développement, sois rassuré !
Je pense que cette rotation apparaîtra dans peu de temps dans la FAQ![]()
Tu as mentiEnvoyé par jmfmarques
J'ai regarder certain code proposé par d'autres personnes et ca va, ce n'est pas la mort non plus..
j'ai pas dis difficile, j'ai dit complexe...Envoyé par jmfmarques
ouais j'imagine bien ma galére surtout qu' à chaque fois qu'on pe dis kkchose , c'est jamais argumenté d'un exemple pour me metre sur la voie ........![]()
![]()
t'as pris la pillule bleue.
bienvenue dans le monde réel du developpeur Neo.
Voila comment faire une rotation de 90° à une pictureBox
Interesant non surtout qu'en le programme comporte 0 commentaire , c'est sur que comme ca ca va m'aider pour la compréhension du programme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102 Private Declare Function SetDIBits Lib "gdi32" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long Private Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long Private Declare Function GetForegroundWindow Lib "user32" () As Long Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long Private Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long Private Type BITMAP bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long End Type Private Type BITMAPINFOHEADER biSize As Long biWidth As Long biHeight As Long biPlanes As Integer biBitCount As Integer biCompression As Long biSizeImage As Long biXPelsPerMeter As Long biYPelsPerMeter As Long biClrUsed As Long biClrImportant As Long End Type Private Type RGBQUAD rgbBlue As Byte rgbGreen As Byte rgbRed As Byte rgbReserved As Byte End Type Private Type BITMAPINFO bmiHeader As BITMAPINFOHEADER bmiColors As RGBQUAD End Type Dim BMPINFO As BITMAPINFO Dim BMPINFOH As BITMAPINFOHEADER Dim Buffer() As RGBQUAD Private Sub CmdPivot_Click() Dim Buffer() As RGBQUAD Dim Result() As RGBQUAD Dim PicInfo As BITMAP Dim Width As Long Dim Height As Long Dim hdc As Long hdc = GetDC(GetForegroundWindow()) GetObject Me.Pic1.Image, Len(PicInfo), PicInfo Width = PicInfo.bmWidth Height = PicInfo.bmHeight ReDim Buffer(0 To Width - 1, 0 To Height - 1) With BMPINFOH .biBitCount = 32 .biHeight = Height .biWidth = Width .biPlanes = 1 .biSize = Len(BMPINFOH) End With BMPINFO.bmiHeader = BMPINFOH GetDIBits hdc, Me.Pic1.Image.Handle, 0, Height, Buffer(0, 0), BMPINFO, 0 Dim X As Long Dim Y As Long Dim XX As Long Dim YY As Long X = UBound(Buffer, 1) Y = UBound(Buffer, 2) ReDim Result(0 To Y, 0 To X) For XX = 0 To X For YY = 0 To Y Result(Y - YY, XX) = Buffer(XX, YY) Next YY Next XX Dim l As Single l = Me.Pic1.Width Me.Pic1.Width = Pic1.Height Me.Pic1.Height = l With BMPINFOH .biBitCount = 32 .biHeight = Width .biWidth = Height .biPlanes = 1 .biSize = Len(BMPINFOH) End With BMPINFO.bmiHeader = BMPINFOH Set Me.Pic1.Picture = Nothing SetDIBits hdc, Me.Pic1.Image.Handle, 0, Width, Result(0, 0), BMPINFO, 0 End Sub Private Function Mini(V1 As Integer, V2 As Integer) As Byte If V1 > V2 Then Mini = V2 Else Mini = V1 End Function Private Function Maxi(V1 As Integer, V2 As Integer) As Byte If V1 > V2 Then Maxi = V1 Else Maxi = V2 End Function![]()
, car aucune utilisté de faire copier coller
![]()
Le code que tu as donné fonctionne-t-il?
Tu souhaites le modifier pour faire des rotations différents de 90°? Tu souhaites avoir des explications sur certaines parties du code? Sa logique d'enchainement?
As-tu regardé l'aide relatives aux API déclarées?
oui j'ai fais des recherches avant de poster des Messages , mais yen as qui n'ont pas l'air de le comprendre , et qui ne prenne pas la peine de lire ce que j'ecris , pourtant c'est ecrit assez gros dans l'intitulé du sujet .... Oui catbull le code que j'ai mis fonctionne , mais dans la seul mesure ou on utilise des PICTUREBOX , et moi mon soucis c'est que j'utilise des IMAGE , il serai plus simple de changer mes IMAGE par des PICTUREBOX mais mon CDC ne me le permet pas , donc comment puis je opérer pour rendre le code opérationnel avec une IMAGE sachant que des propriété tels que SCALEWIDHT .... n'existe pas avec une IMAGE![]()
![]()
1. Lorsque tu parles d'image, tu parles du contrôle image? Il faut être précis, le terme image prete à confusion.
2. Le code que tu as fournis travaille sur un fichier image de type BMP. Donc indépendant du controle utilisé excépté la récupération de la dite image (Me.Pic1.Image) et de la hauteur, largeur (Height, Width)
3. Tu parles de SCALEWIDHT, mais dans le code que tu nous as fournis n'utilise pas cette propriété.
Tu peux par contre ouvrir l'image ds un picturebox et ensuite la tourner si code plus facile et la réenregistrer ailleur...
C'est tres possible
Et bien , tu sais dans la barre d'outils , on peut choisir entre PictureBox ou Image , et dés le départ , j'ai utilisé un groupe indexé d'Image , car je dois créer un control ActiveX qui sera utiliser dans un superviseur , pour visualiser l'etat d'une vanne selon la couleur de l'Image vanne . Je dispose donc d'environ 10 images Vanne differentes , jusque la aucun soucis , mais mon patron m'a demander de créer une page de propriété sur laquelle l'utilisateur pe choisir la disposition de l'image , vertical ou horizontal , donc avant de me pencher sur le soucis de la création de la page de propriété , JMFMARQUES ma dit de me penché sur le code permettant de faire pivoter l'image .... et mes soucis ont commencé![]()
Bon, Lucas !
Vertical ou horizontal, seulement, c'est mille fois plus simpe que de "faire pivoter" (donc quel que soit l'angle).
Je veux bien venir à ta rescousse sur ce coup-ci, mais te laisserai faire en ce qui concerne les propriétés à construire pour ton activex (car j'estime personnellement qu'on s'abstient de viser haut lorsque l'on ne sait pas voler bas).
Patientes donc un peu et je reviens avec tes positions horizontales et verticales ....
ok , c'est cool , mais je n'ai ( personnellement jamais pretendu savoir voler haut ) c'est plutot mon maitre de stage qui le pretend , il est bien gentil , mais n'étant pas la depuis 2 semaines ( il est en vacances ) je l'ai vu seulement 1 jour , il ma donné mon sujet et op op , il est parti , et toujours pas revenu , donc , je suis bien obligé de jouer cartes sur table si je veux lui presenter quelque chose à son retour![]()
Mon patron sais faire ce qu'il ma demander , mais comme il me l'a fait savoir , l'entreprise n'a pas d'argent à mettre dans le domaine recherche et developpement , donc il donne ca au stagiaire , donc pour me permettre de prendre mon envole , je prend appuis dans les forums ....
ca serai pas super plus pratique de prendre paint, de rotationer les images de 90degres, de les enregistrer avec le meme nom presaue ( genre VanneFemeeNumero8_vert.png ou VanneFemeeNumero8_hori.png)
et quand tu coche une case dans ta config ou je ne sais ou, tu dis;
ca convient pas comme solution ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim var as string If JveuxImageVerticale = true Then var = vert Else var = hori End If image = chemin & "VanneFemeeNumero8_" & var & ".png"
Edit:
sinon, je partage et comprend tout a fait le sentiment d'etre le pauvre stagiaire exploite auquel on demande tout et n'importe quoi
Stgiaire POWAAAA :p
je craint que ca alourdise le programme d'avoir 10 images verticals visible=false et 9 horizontal visible = false , car on voit toujours qu'une seule image
..............
donc j'attend la reponse de JMFMARQUES
Partager