Le but ici est donc de faire pivoter une image dans un angle défini.
j'ai pas vraiment cherché sur le site, mais si il y a une autre solution, indiqué moi le lien.
Source / Exemple :
'
'Image Rotation v1.0 - par Nestor
'le but ici est de faire changer l'angle de position d'une image
'on commance par découper l'image en 4
'd'appliqué les nouvelles position
'puis de les regrouper pour en faire qu'une.
'(je pensais pas avoir autant de mal pour si peux)
Private Sub imagerotation(img1 As Control, img2 As Control, ByVal theta!) 'bé oui
Const Pi = 3.14159265359 'valeur de Pi
Dim c1x As Integer 'Centre de l'image1 X
Dim c1y As Integer 'Centre de l'image1 Y
Dim c2x As Integer 'Centre de l'image2 X
Dim c2y As Integer 'Centre de l'image2 Y
Dim a As Single 'Angle pour centrer l'img2
Dim r As Integer 'Radiant du centre de l'img2
Dim i1x As Integer 'Position de l'image1 "i1x" X
Dim i1y As Integer 'Position de l'image1 "i1y" Y
Dim i2x As Integer 'Position de l'image2 "i2x" X
Dim i2y As Integer 'Position de l'image2 "i2y" Y
Dim m As Integer 'Maximum de la hauteur et de la largeur de l'image 2
'On commance à diviser par 2 en 4 partie (création donc de 4 img à partir d'une)
c1x = img1.ScaleWidth / 2
c1y = img1.ScaleHeight / 2
c2x = img2.ScaleWidth / 2
c2y = img2.ScaleHeight / 2
'Création et recomposition de l'image
'-------------------------------------------------
m = img2.ScaleWidth
If m < img2.ScaleHeight Then m = img2.ScaleHeight
m = m / 2 - 1
'déplacement
For i2x = 0 To m
For i2y = 0 To m
'calcule des 4 prochainne nouvelles position
If i2x = 0 Then
a = Pi / 2
Else
a = Atn(i2y / i2x)
End If
r = Sqr(1 * i2x * i2x + 1 * i2y * i2y) 'multiplicateur
'préposition
i1x = r * Cos(a + theta)
i1y = r * Sin(a + theta)
'reconstitution de l'image en 4 parties
c0 = img1.Point(c1x + i1x, c1y + i1y)
c1 = img1.Point(c1x - i1x, c1y - i1y)
c2 = img1.Point(c1x + i1y, c1y - i1x)
c3 = img1.Point(c1x - i1y, c1y + i1x)
'application et affichage
If c0 <> -1 Then img2.PSet (c2x + i2x, c2y + i2y), c0
If c1 <> -1 Then img2.PSet (c2x - i2x, c2y - i2y), c1
If c2 <> -1 Then img2.PSet (c2x + i2y, c2y - i2x), c2
If c3 <> -1 Then img2.PSet (c2x - i2y, c2y + i2x), c3
Next
'Ajoutez si dessous, "Afficher = DoEvents()" si vous voulez la voir ce recontruire toute seul
'Afficher = DoEvents()
Next
End Sub
Private Sub Command1_Click() 'c'est la que tout se joue
Const Pi = 3.14159265359 'valeur de Pi
angle = Pi / 6 'Pi et diviZé
Image2.Cls 'actualise
Call imagerotation(Image1, Image2, angle) 'affiche l'image terminé
End Sub
Conclusion :
pensez à mon nom si vous réutilisez ce code ;-)
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.