Salut à tous...
Je suis débutant en VB alors si les explications sont pas très clair ou s'il vous manque des infos, n'hésitez pas à me poser des questions.
Alors voilà, j'ai rencontré un problème et ça va faire un moment que je penche dessus. J'ai créé une classe Ligne avec 4 propriétées : les 4 coordonnées X1, Y1, X2, Y2 d'une ligne, et je souhaite passer ces valeurs par référence à une fonction Rotation_Point qui en modifira ces valeurs
J'ai simplifié volontairement le code pour cibler le problème.
Voilà le code que j'ai tapé et qui ne marche pas :
Pour info, la fonction Rotation_Point recoit bien les valeurs des Points X1, Y1 et X2, Y2, elle les modifie mais une fois sorti de la fonction, les valeurs des 4 propriétées (X1, Y1, X2, Y2) reste inchangées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ' Obj est l'objet que je passe en paramètre (ici c'est une Ligne) ' XO, YO est le point de rotation autour duquel va tourner la ligne ' Angle_Rot est l'Angle de Rotation que va effectuer la ligne Private Sub Rotation_Forme(Obj As Object, ByVal XO As Single, ByVal YO As Single, ByVal Angle_Rot As Single) With Obj If TypeOf Obj Is Ligne Then Rotation_Point .X1, .Y1, XO, YO, Angle_Rot Rotation_Point .X2, .Y2, XO, YO, Angle_Rot End If End With End Sub
Celui-là marche. Mais pour faire tourner une figure avec bcp de point, chose même pas imaginer le tps que ça va mettre s'il faut que je fasse à chaque fois 4 affectations par point. C'est pour ça que je souhaite faire à tout prix un passage par référence.
Voilà c tout, j'espère que j'ai pas oublié d'explication.
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 Private Sub Rotation_Forme(Obj As Object, ByVal XO As Single, ByVal YO As Single, ByVal Angle_Rot As Single) Dim X As Single Dim Y As Single With Obj If TypeOf Obj Is Ligne Then X = .X1 Y = .Y1 Rotation_Point X, Y, XO, YO, Angle_Rot .X1 = X .Y1 = Y X = .X2 Y = .Y2 Rotation_Point X, Y, XO, YO, Angle_Rot .X2 = X .Y2 = Y End If End With End Sub
Merci d'avance....
Partager