IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Déplacement et Redimensionnement d'une picturebox


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut Déplacement et Redimensionnement d'une picturebox
    Bonjour,

    je dispose de plusieurs pictures box à l'intérieur d'une plus grande picture box.
    JE voudrais les redimensionner (j'ai mis des pointeurs différents quand on approche du bord) et les déplacer:
    - j'ai réussi quelques redimensionnement mais des grands rectangles noirs apparaissent pendant que je bouge ma souris, et certains coins ne marchent pas
    - j'arrive à déplacer mes pictures box mais ma souris se met toujours tjs ds le coin gauche de ma picture box

    Je pensais, à resize et move!!

    Pouvez-vous m'aider???

    Merci!!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut
    Salut,

    tu veux les déplacer directement à l'ecran une fois le prog lancé ou les déplacer lors de l'execution d'une sub ?

    Si c dans une sub tu change directement leurs position :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    picturebox1.top = ...
    picturebox1.left = ...
    picturebox1.height = ...
    picturebox1.width = ...
    sinon je ne sais pas ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Par défaut
    si tu peux les déplacer directement à l'ecran, affecte les coordonnées de la position de la souris à deux variables et tu pourra te démerder

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Je ne sais pas si je devine bien Alys, mais il me semble que ce que tu veux faire est ceci :
    1) d'une part assortir des pictureboxes de "poignées" de redimensionnement
    2) d'autre part leur appliquer un DragAndDrop

    Est-ce celà ?

    Si ou, nous allons traiter celà problème par problème (un sujet par problème), afin que chacun puisse, par la suite, en profiter par des recherches sur les mots "poignées", "redimensionnement" pour un problème et "DragAndDrop" pour l'autre problème.

    Je te suggère donc ceci :
    -modifier le titre de ce sujet pour le limiter aux "poignées" (intitule-le "poignées de redimensionnement d'un contôle", par exemple)
    - nous montrer ici le code que tu as commencé à écrire dans ce but, même s'il te parait mauvais ou inopérant.

    Tu auras dès lors mon aide et mon appui

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut
    voilà le code que j'ai commencé pour le redimensionnement:

    dans ma classe:

    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
    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
    Si quelqu'un peut m'aider!!!

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    1) Ceci me gêne :

    Dim Tab_Trav() As New Ctravee 'ceci est un tableau d'objet de ma classe
    2) peux-tu me confirmer qu'à ce stade, il ne s'agit que de faire fonctionner des "poignées de positionnement", s'il te plait ?

  7. #7
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 14
    Par défaut
    Il s'agit en fait de déplacer et redimensionner des travées qui sont en fait 2 picturebox: un rectangle sur lequel on utilise les poignées de redimensionnement, et une picture box représentant une flèche de stockage que l'on ne redimensionne pas.
    D'où la notion de classe!!!
    pour utiliser mon rectangle, j'utilise donc tab_trav(i).trav (trav est la picture box à redimensionner)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] insérer une image redimensionnée proportionnellement taille picturebox
    Par veens777 dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/09/2012, 14h49
  2. Réponses: 1
    Dernier message: 04/04/2011, 17h12
  3. Déplacement de l'image d'une picturebox
    Par WG614 dans le forum VB.NET
    Réponses: 1
    Dernier message: 08/03/2009, 10h53
  4. Réponses: 11
    Dernier message: 02/06/2007, 01h55
  5. Redimensionner une pictureBox
    Par jmfmarques dans le forum VB 6 et antérieur
    Réponses: 37
    Dernier message: 19/07/2006, 12h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo