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 :

Redimensionner une pictureBox


Sujet :

VB 6 et antérieur

  1. #21
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    bon, rien d'exceptionnel, mais je commence par proposer un bout de code pour le redimmensionnement de l'image pour que celle -ci s'adapte à la taille de la picture box.

    Ouvrir un nouveau projet avec une PictureBox(Picture1) et 2 TextBox (Text1 et Text2).
    Insérer le code suivant
    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
     
     
    Option Explicit
    Dim CoinSelect As Integer
    Dim Xo, Yo, X, Y
     
    Private Sub Text1_Change()
    If Text1.Text = "" Then
        Exit Sub
    End If
    Picture1.Height = Text1.Text
    Redimmensionner
    End Sub
    Private Sub Text2_Change()
    If Text1.Text = "" Then
        Exit Sub
    End If
    Picture1.Width = Text2.Text
    Redimmensionner
    End Sub
     
     
     
    Private Function Redimmensionner()
    Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.Width, Picture1.Height, opcode:=vbSrcCopy
     
    End Function
    Voilà, maintenant question:

    pour le redimmensionnement de la PictureBox, je suis entrain d'utiliser DragDrop, mais c'est pas satisfaisant, y-a-t-il un autre moyen pour "saisir" un coin et étirer?
    Xavier

  2. #22
    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
    Points : 4 674
    Points
    4 674
    Par défaut
    pour le redimmensionnement de la PictureBox, je suis entrain d'utiliser DragDrop, mais c'est pas satisfaisant, y-a-t-il un autre moyen pour "saisir" un coin et étirer?
    Non, hélàs... il va falloir "ajouter" autre chose à la picturebox.

    Tu pourrais bien sûr décider que si tu es "proche" d'un bord, un mécanisme fonctionnerait mais ce ne serait pas satisfaisant, car tu pourrais avoir quelque chose à modifier précisément proche d'un bord... et l'ambiguité serait alors là.

    Tu as par ailleurs oublié de préciser que ton code ne peut fonctionner que si une image est insérée dans la picture1 (sinon : plantage...)
    Il ne peut enfin fonctionner que si la propriété autoredraw de picture1 = False
    Je vous laisse chercher (je n'interviens que pour dire si une chose convient ou non)

  3. #23
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    exact, mais c'est juste pour le code d'adaptation de l'image.
    Y'a en d'autres qui bossent dessus?
    Xavier

  4. #24
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par Asdorve
    exact, mais c'est juste pour le code d'adaptation de l'image.
    Y'a en d'autres qui bossent dessus?
    Désolé, je n'ai pas le temps de me lancer à fond dedans mais dès que j'en ai plus (septembre après le mariage) je travaille dessus.

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  5. #25
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    compréhensible, à part toi?
    Xavier

  6. #26
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    bon, j'essaye d'avancer dans l'optique du projet, mais j'en suis encore loin.

    Insérez dans une form une PictureBox (Picture1) et insérez une image,

    mettez le code suivant:

    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
     
    Dim CLic As Single
     
    Private Sub Form_Load()
     
    With Picture1
        .AutoRedraw = True
        .AutoSize = True
        .Appearance = 0
        .BorderStyle = 0
    End With
     
    End Sub
    Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     
    'là c'est du bricolage
    If (X >= (Picture1.Width - 135) And X <= (Picture1.Width)) And (Y >= Picture1.Height - 135) And Y <= Picture1.Height Then
    Picture1.MousePointer = vbSizeNWSE
    CLic = 1
            Xa = X: Ya = Y
    End If
    End SubEnd Sub
     
     
    Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
     
    If X < 0 Or Y < 0 Then Exit Sub
     
    If CLic = 1 Then
    Form1.Refresh
    Picture1.Width = X
    Picture1.Height = Y
    Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.Width, Picture1.Height, opcode:=vbSrcCopy
     
    End If
    End Sub
     
    Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Picture1.Width = X
    Picture1.Height = Y
    CLic = 0
    Picture1.MousePointer = vbArrow
    End Sub
    Clic droit en bas à droite seulement et étirez ou vous voulez,

    normalement, ça marche
    Xavier

  7. #27
    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
    Points : 4 674
    Points
    4 674
    Par défaut
    C'est un bon début..

    Toutefois, il faut que l'utilisateur puisse quand-même :

    savoir que l'image est en état de pouvoir être étirée. Un double-clic, peut-être, qui permettrait de signaler qu'un va étirer l'image ? Accompagné alors d'une modification de l'image en ses bordures ou, peut-être, une autre image vide avec des poignées qui viendrait, en second plan, encadrer la 1ère ?
    Puis un étirement de la 2ème image (la bordure) qui entraînerait un étirement de la 1ère image ?


  8. #28
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Ce sujet, qui entre lui aussi, dans le cadre des contributions (c'est l'objectif final, il me semble, non ?) devrait être déplacé dans le forum adéquat, que je pensais initialement destiné à ce genre de discussion (apparement, je me suis trompé, donc, je me demande bien pourquoi je l'ai créé )

    Mais comme je ne veux m'attirer les foudres de personne, je le laisserai donc anonyme, au milieu du reste, et m'abstiendrai de toute remarque, commentaire, suggestion, critique, test et autre
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  9. #29
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Citation Envoyé par jmfmarques
    C'est un bon début..

    Toutefois, il faut que l'utilisateur puisse quand-même :

    savoir que l'image est en état de pouvoir être étirée. Un double-clic, peut-être, qui permettrait de signaler qu'un va étirer l'image ? Accompagné alors d'une modification de l'image en ses bordures ou, peut-être, une autre image vide avec des poignées qui viendrait, en second plan, encadrer la 1ère ?
    Puis un étirement de la 2ème image (la bordure) qui entraînerait un étirement de la 1ère image ?

    j'y travaille, mais chaque chose en son temps,

    Bonne soirée.
    Xavier

  10. #30
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Ce sujet, qui entre lui aussi, dans le cadre des contributions (c'est l'objectif final, il me semble, non ?) devrait être déplacé dans le forum adéquat, que je pensais initialement destiné à ce genre de discussion (apparement, je me suis trompé, donc, je me demande bien pourquoi je l'ai créé )


    ce sujet a me semble-t-il été créé avant l'apparition du nouveau forum (sauf erreur de ma part)
    il faut donc que ceux qui ont les pleins pouvoirs le déplace.
    Mais bon, c'est à l'auteur du topic de dire...
    Xavier

  11. #31
    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
    Points : 4 674
    Points
    4 674
    Par défaut
    Moi je veux bien, mais en faisant remarquer qu'il ne deviendra une proposition que lorsqu'il aura été conduit à son terme.

    Si l'on n"y prend garde, nul ne s'y rtetrouvera certes plus entre les propositions et les préparatifs d'une proposition. Mais bon...

    Quant à l'esprit et à ceux qui peuvent ou non partiicipier à cette construction, je crois que tout a parfaitement été défini d'entrée de jeu : Les plus avertis pourront ici et là guider... mais ne devront jamais "coder".

    http://www.developpez.net/forums/sho...26&postcount=1

    Seuls ceux qui n'ont pas encore atteint une grande dextérité sont donc les bienvenus..pour coder. Les autres ne pourront que conseiller sur les mécanismes (pas le code)

  12. #32
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Bonjour,

    Une idée, peut-être, pour permettre la différentiation entre projet et présentation de réalisations :
    - garde le sous-forum "Vos contributions VB" pour la présentation des réalisations : applications, codes, sources, FAQ
    - mettre en place un sous-forum type "Projets en cours" où là ce genre de thread pourrait se retrouver

    Bonne journée

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  13. #33
    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
    Points : 4 674
    Points
    4 674
    Par défaut
    Theo a tout-à-fait raison.

    J'ai pensé la même chose...

    Reste à savoir si elle est techniquement envisageable.

  14. #34
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    j'essaye d'avancer petit à petit, voici la suite de ma proposition:


    double clic sur l'image (que vous chargez vous même dans les propriétés de la picturebox),

    -> étirement horizontal : milieu du bord droit
    -> étirement vertical : milieu du bord bas
    ->étirement proportionnel : coin bas droit.

    J'attends les suggestions pour avancer.

    Correction dans le code:


    dans le fonction Picture1.MouseMove:

    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
    ...
     'Etirement horizontal
        If CLic = 2 Then
            Form1.Refresh
            Poignées
            Picture1.Width = X
            Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.Width, Picture1.Height, opcode:=vbSrcCopy
            Poignées
            Coeff = Picture1.Width / Picture1.Height
        End If
         'Etirement horizontal
        If CLic = 3 Then
            Form1.Refresh
            Poignées
            Picture1.Height = Y
            Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.Width, Picture1.Height, opcode:=vbSrcCopy
            Poignées
            Coeff = Picture1.Width / Picture1.Height
    ...
    Fichiers attachés Fichiers attachés
    Xavier

  15. #35
    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
    Points : 4 674
    Points
    4 674
    Par défaut
    Voilà qui est déjà beaucoup mieux.

    BRAVO !

    Tu demandes une suggestion ?

    Oui, il y en a :

    Au lieu de calculer si ton curseur se trouve ou non sur (ou suffisamment près, comme tu as fait) d'une poignées... Serait-il idiot de
    1) dessiner un rectangle extérieur avec côtés en pointillés à l'extéroeir de ta picture (mais tout contre elle).
    2) d'utiliser un tout petit bouton de commande carré que tu appelerais par exemple poignées, à placer sur ta Form avec index 1
    3) au démarrage, dupliquer ce bouton de sorte à en créer 7 autres (dynamiquement) et d'en obtenir ainsi 8 au total, indexés de 1 à 8 ? tous invisibles ?
    4) au double clic : dessiner le rectangle pointillé par la méthode Line avec l'argument B et y placer les 8 poignées à leur place, le tout dans une procédure qui serait également appelée pendant les étirements ?

    Avantage : les poignées étant maintenant identifiées (chacun des 8 boutons de commandes indexés de 1 à 8) : plus besoin de calculer si on est au bon endroit pour étirer ...

    Pour le reste : tes calculs d'étirement (qui sont bons) et tu joues avec les propriétés visible et avec Cls (pour tout faire disparaitre une fois l'étirement fini).

    Vas - y

  16. #36
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    bonjour à tous,

    voilà ma proposition pour ce jour, en tenant compte de ce que tu me dis dans ton dernier mess jmf.

    J'attends des nouvelles...
    Fichiers attachés Fichiers attachés
    Xavier

  17. #37
    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
    Points : 4 674
    Points
    4 674
    Par défaut
    Mais Bravo, asdorve. C'est très bien.



    Il te reste à faire celà à chacune des huit poignées, en essayant de traiter celles qui sont "symétiques" par envoi de paramètres de signe inversé. Et de traiter celles qui sont dans les coins (qui, elles, doivent provoquer des étirements proportionnels.

    Tu es presque arrivé au bout. Je te félicite.

    Edit : je n'avais pas vu que la diagonale était également traitée en étirement proportionnel dans le coin inférieur droit.

    C'est donc encore plus avancé que je ne l'avais vu. TRES BIEN

    Utilise maintenant les signes inversés (voir plus haut) ou autre chose de ton cru pour doter toutes les poignées du même mécanisme.

    BRAVO

  18. #38
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    SAlut à tous,

    Vous trouverez le code pour intégrer des poignées à une pictureBox et pour gérer tous les étirements (2 horizontaux, 2 verticaux et 4sur les coins en gardant la proportionnalité).
    Lien:
    http://www.developpez.net/forums/sho...d.php?t=184198


    Voilà.
    Fichiers attachés Fichiers attachés
    Xavier

Discussions similaires

  1. Redimensionner une image dans un picturebox
    Par callo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/06/2009, 17h20
  2. Réponses: 11
    Dernier message: 02/06/2007, 01h55
  3. [VB.NET] Redimensionner une image dans un PictureBox
    Par Monster77 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 05/04/2007, 18h24
  4. Déplacement et Redimensionnement d'une picturebox
    Par alys56 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 01/06/2006, 10h00
  5. Redimensionner une ToolBar
    Par tscoops dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/11/2003, 16h46

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