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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
| Public Function Zone(A As PictureBox, _
cooX As Single, _
cooY As Single)
Dim dis As Single
dis = 0.05
Wdis = A.Width * dis
Hdis = A.Height * dis
Wdis2 = A.Width * (1 - dis)
Hdis2 = A.Height * (1 - dis)
If cooX >= 0 And cooX <= A.Width And cooY >= 0 And cooY <= A.Height Then
If cooY >= 0 And cooY <= Hdis Then
' coin supérieur gauche
If cooX <= Wdis Then
Zone = 1
'bord haut
ElseIf cooX <= Wdis2 Then
Zone = 2
'coin supérieur droit
ElseIf cooX > Wdis2 Then
Zone = 3
End If
ElseIf cooY <= Hdis2 Then
' bord gauche
If cooX <= Wdis Then
Zone = 8
' bord droit
ElseIf cooX <= Wdis2 Then
Zone = 0
ElseIf cooX > Wdis2 Then
Zone = 4
End If
ElseIf cooY > Hdis2 And cooY <= A.Height Then
' coin inférieur gauche
If cooX <= Wdis Then
Zone = 7
' bord inférieur
ElseIf cooX <= Wdis2 Then
Zone = 6
'coin inférieur droit
ElseIf cooX > Wdis2 Then
Zone = 5
End If
End If
End If
End Function
Public Function Pointeur(A As PictureBox, _
CoordX As Single, _
CoordY As Single) As Integer
Select Case Zone(A, CoordX, CoordY)
Case 1
'pointeur NW SE
Pointeur = 8
Case 2
'pointeur NS
Pointeur = 7
Case 3
'pointeur NE SW
Pointeur = 6
Case 4
'pointeur WE
Pointeur = 9
Case 5
'pointeur NW SE
Pointeur = 8
Case 6
'pointeur NS
Pointeur = 7
Case 7
'pointeur NE SW
Pointeur = 6
Case 8
'pointeur WE
Pointeur = 9
Case 0
Pointeur = 0
End Select
End Function
Public Sub Dimension(A As PictureBox, _
cX As Single, _
cY As Single, _
X As Single, _
Y As Single)
Select Case Zone(A, cX, cY)
Case 1
If A.Left <> X Then
A.Move X, A.top, A.Width + A.Left - X, A.Height
'A.Width = A.Width - X + A.Left
'A.Left = X
End If
If A.top <> Y Then
A.Move A.Left, Y, A.Width, A.Height + A.top - Y
'A.Height = A.Height + A.top - Y
'A.top = Y
End If
Case 2
If A.top <> Y Then
A.Move A.Left, Y, A.Width, A.Height + A.top - Y
'A.Height = A.Height + A.top - Y
'A.top = Y
End If
Case 3
If X <> A.Width + A.Left Then
A.Move A.Left, A.top, A.Width + A.Left - X, A.Height
'A.Width = X - A.Left
End If
If Y <> A.top Then
A.Move A.Left, Y, A.Width, A.Height + A.top - Y
'A.Height = A.Height + A.top - Y
'A.top = Y
End If
Case 4
If X <> A.Width + A.Left Then
A.Move A.Left, A.top, X - A.Left
'A.Width = X - A.Left
End If
Case 5
If X <> A.Width + A.Left Then
A.Move A.Left, A.top, X - A.Left, A.Height
'A.Width = X - A.Left
End If
If Y <> A.Height + A.top Then
A.Move A.Left, A.top, A.Width, Y - A.top
'A.Height = Y - A.top
End If
Case 6
If Y <> A.Height + A.top Then
A.Move A.Left, A.top, A.Width, Y - A.top
'A.Height = Y - A.top
End If
Case 7
If A.Left <> X Then
A.Move X, A.top, A.Width + A.Left - X, A.Height
'A.Width = A.Width + A.Left - X
'A.Left = X
End If
If A.Height + A.top <> Y Then
A.Move A.Left, A.top, A.Width, Y - A.top
'A.Height = Y - A.top
End If
End Select
Ensuite dans mon form:
Dim xDep As Single
Dim yDep As Single
Dim RedimPossible As Boolean
Dim bDeplac As Boolean
Dim bRedim As Boolean
Dim n As Integer
Dim cX As Single
Dim cY As Single
Dim Tab_Trav() As New Ctravee 'ceci est un tableau d'objet de ma classe
Private Sub travee_MouseDown(Index As Integer, _
Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)
If RedimPossible Then
bRedim = True
bDeplac = False
Else
bDeplac = True
bRedim = False
End If
cX = X
cY = Y
End Sub
Private Sub travee_MouseMove(Index As Integer, _
Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)
travee(Index).MousePointer = Tab_Trav(Index).Pointeur(travee(Index), X, Y)
If Tab_Trav(Index).Zone(travee(Index), X, Y) <> 0 Then
RedimPossible = True
Else
RedimPossible = False
End If
If bRedim = True Then
Call Tab_Trav(Index).Dimension(travee(Index), sstock(Index), cX, cY, X, Y)
End If
If bDeplac Then
Tab_Trav(Index).trav.Left = Tab_Trav(Index).trav.Left + X
Tab_Trav(Index).trav.top = Tab_Trav(Index).trav.top + Y
End If
End Sub
Private Sub travee_MouseUp(Index As Integer, _
Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)
bRedim = False
bDeplac = False
Call Tab_Trav(Index).Pointeur(travee(Index), X, Y)
End Sub |
Partager