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 :

[vb6] traitement d'images, besoin d'éclaircissements


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    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 336
    Points : 718
    Points
    718
    Par défaut [vb6] traitement d'images, besoin d'éclaircissements
    Bonjour,

    Je suis en ce moment sur le développement d'une appli (premier post à ce sujet: http://www.developpez.net/forums/sho...hlight=asdorve)

    Mais voilà mon problème aujourd'hui: il réside dans la logique du développement, et j'aimerai que l'on puisse y réfléchir à plusieurs.

    Ce qui est établi:
    -Je lance l'appli, et je génère une PictureBox "image" indexée à 0
    -Je sélectionne des éléments (enregistré sous forme d'images bmp) et je les aligne les un
    à la suite des autres. Ainsi, à chaque ajout, je crée une autre PictureBox "image" indexée.

    Toutefois, si la longueur de ma chaine de PictureBox "image" dépasse la largeur de l'écran,
    je rétrécie l'ensemble "image(index)" (avec PaintPicture)

    Jusque là tout va bien.


    Maintenant, voilà où se situe le problème:

    Si je veux continuer à rajouter des éléments, il faut qu'ils soient eux aussi rétréci, et si encore j'arrive en bord d'écran, je dois rétrécir le tout et les éléments suivants seront rétréci à la nouvelle taille.

    Et je n'arrive pas à trouver une logique dans mon code pour atteindre ce but.


    Je suis là pour répondre éventuellement à vos questions (je ne suis peut-être pas clair).


    Merci d'avance.

  2. #2
    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
    Bonjour asdsorve,

    Tout est là dedans question de chronologie des instructions, à mon avis, ainsi que de "fixation" des résultats précédents.

    La chose n'est pas difficile mais réclame une attention particulière et soutenue , tout au long.

    Mets-nous ici ton code (ou un zip avec images) et je vois celà...
    Je vois bien ce qui se passe mais mon intervention dépendra forcément d'une chronologie que seul ton coide montrera.

  3. #3
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    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 336
    Points : 718
    Points
    718
    Par défaut
    voilà le code

    Commande pour ajouter des éléments

    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
    
    Private Sub Command1_Click()
        
    'MonImage est une fonction qui renvoie le chemin d'accès de l'image concernées
        Call MonImage
    
        cmdGénérer.Enabled = True
        Picture2.Picture = Nothing
        
    '############ 1 RESEAU ##############
        If frmRéseau.NbreRéseau = 1 Then
            'Normal
        End If
    '############ 2 RESEAUX ##############
     If (frmRéseau.NbreRéseau = 2) Then
            '=========== PcNormale, PcDétrompée, Disjoncteur90 Disjoncteur112.5 =============
            If Pathname = PCNORM Or Pathname = PCDET Or Pathname = DISJONCTEUR90 Or Pathname = DISJONCTEUR1125 Then
          
                    If Passage = 0 Then
                        
                        If AvantDernier = DISJONCTEUR90 Or AvantDernier = DISJONCTEUR1125 Then
                            GoTo Suite
                        Else
                            Path1 = DEMIOBTURATEUR
                            Load Picture1(i)
                            Picture1(i).Move EcartLeft, haut
                            Picture1(i).Picture = LoadPicture("\\Linux101\bureautique\Applications\Générateur de plan\" & Path1)
                            Picture1(i).Visible = True
    
                            Longueur = Longueur + 22.5
                            TableauLong(i) = 22.5
                            lblLong.Caption = "Longueur : " & Longueur & "mm"
                            
                            EcartLeft = EcartLeft + Picture1(i).Width
                            i = i + 1
                            Passage = 1
                        End If
                    End If
            End If
    
    
    End If
    
    Suite:
     '##################### 3 RESEAUX ##################
     'non géré pour le moment
    
    
        TableauLong(i) = LgElement
        
        If i = 0 Then
            Picture1(0).Picture = LoadPicture(Pathname)
            EcartLeft = Picture1(0).Width + Picture1(0).Left
            Picture1(0).Visible = True
        Else
            Load Picture1(i)
    
            Picture1(i).Move EcartLeft, haut
            Picture1(i).Picture = LoadPicture("\\Linux101\bureautique\Applications\Générateur de plan\" & Pathname)
            Picture1(i).Visible = True
    
            EcartLeft = EcartLeft + Picture1(i).Width
        End If
        'Si on met une entrée de cable, on le fera suivre par un obturateur 45
        If i = 0 And LgElement = 0 And Pathname <> PATTE19P Then
            Pathname = OBTURATEUR
            TableauLong(i) = LgElement
            i = i + 1
            Load Picture1(i)
             Picture1(i).Move EcartLeft, haut
            Picture1(i).Picture = LoadPicture("\\Linux101\bureautique\Applications\Générateur de plan\" & Pathname)
            Picture1(i).Visible = True
            Longueur = 45
            LgElement = Longueur
            TableauLong(i) = LgElement
            EcartLeft = EcartLeft + Picture1(i).Width
             lblLong.Caption = "Longueur : " & Longueur & "mm"
        End If
        
          'Si on met une pattes pour 19 pouces en entrée, on le fera suivre par un obturateur 35
        If Pathname = PATTE19P And Longueur = 0 Then
            Pathname = OBTURATEUR35
            i = i + 1
            Load Picture1(i)
             Picture1(i).Move EcartLeft, haut
            Picture1(i).Picture = LoadPicture("\\Linux101\bureautique\Applications\Générateur de plan\" & Pathname)
            Picture1(i).Visible = True
            Longueur = 35
            LgElement = Longueur
            TableauLong(i) = LgElement
            EcartLeft = EcartLeft + Picture1(i).Width
             lblLong.Caption = "Longueur : " & Longueur & "mm"
    
        End If
        Picture1(i).Picture = Picture1(i).Image
        LongueurSurForm = LongueurSurForm + Picture1(i).Width
    
        'redimmensionnement si on dépasse la largeur de l'écran
         If Redimm = 2 Then
               Redimmensionne (Redimm)
               'GoTo JePoursuis
            End If
        If LongueurSurForm > Form1.ScaleWidth Then
      
            Redimm = 1
           Redimmensionne (Redimm)
       End If
    JePoursuis:
        'Fin du redimmensionnement
                i = i + 1
                j = i
        lblLong.Caption = "Longueur : " & Longueur & "mm"
        
        AvantDernier = Pathname
        Passage = 1
    End Sub
    Pour redimmensionner
    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
     
    Private Sub Redimmensionne(Etat As Integer)
     
    Select Case Etat
     
        Case 1:
            CoeffReduc = CoeffReduc + 100
            LongueurSurForm = 0
            For a = 0 To i
     
            Picture1(a).Cls
           Picture1(a).AutoRedraw = True
     
            If a = 0 Then
                Picture1(a).PaintPicture Picture1(a), 0, 0, Picture1(a).Width - CoeffReduc, Picture1(a).Height - CoeffReduc, 0, 0, Picture1(a).Width, Picture1(a).Height
            Else
            Picture1(a).Move Picture1(a - 1).Left + Picture1(a - 1).Width, Picture1(a - 1).Top
             Picture1(a).PaintPicture Picture1(a), 0, 0, Picture1(a).Width - CoeffReduc, Picture1(a).Height - CoeffReduc, 0, 0, Picture1(a).Width, Picture1(a).Height
            End If
            Picture1(a).AutoSize = True
           Picture1(a).Width = Picture1(a).Width - CoeffReduc
            Picture1(a).Height = Picture1(a).Height - CoeffReduc
            Picture1(a).AutoRedraw = False
     
            LongueurSurForm = LongueurSurForm + Picture1(a).Width
     
            Next
           ' For a = 0 To i
           '     Picture1(a).Picture = Picture1(a).Image
           ' Next
            Redimm = 2
            Exit Sub
        Case 2:
            Picture1(i).Cls
           Picture1(i).AutoRedraw = True
     
              Picture1(i).Move Picture1(i - 1).Left + Picture1(i - 1).Width, Picture1(i - 1).Top
             Picture1(i).PaintPicture Picture1(i), 0, 0, Picture1(i).Width - CoeffReduc, Picture1(i).Height - CoeffReduc, 0, 0, Picture1(i).Width, Picture1(i).Height
     
            Picture1(i).Width = Picture1(i).Width - CoeffReduc
            Picture1(i).Height = Picture1(i).Height - CoeffReduc
            Picture1(i).AutoRedraw = False
     
            LongueurSurForm = LongueurSurForm + Picture1(i).Width
        End Select
    End Sub

  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
    Points : 4 674
    Points
    4 674
    Par défaut
    Bon, asdorve...

    J'ai réfléchi entre temps ...

    Ni ton code ni ma réponse n'appoteront rien aux autres ici...

    Je sais maintenant exactement quel est ton problème, mais ne veux pas en traiter ici.
    Ce serait totalement incompréhensible pour les autres (tous ceux qui ne sont pas exactement dans ton bain),
    à moins de donner un cours et ce serait très long.

    Je vais donc te proposer autre chose : apprendre à pêcher. Et te proposer de le faire par voir privée,
    en partant du tout petit projet que je t'ai demandé hier de lancer (redimensionnement direct d'une pictureBox).
    C'est à partir de ce tout petit projet que je serai à même de te faire comprendre, lentement, certains mécanismes assez ésotériques.

    Une fois ces mécanismes découverts et bien compris, tu résoudras non seulement ton problème actuel mais bien d'autres aussi...

    Procéder autrement équivaudrait à donner un cours en direct et je ne le
    veux pas, d'une part, et ce serait abusif d'autre part.

    Si tu en es d'accord : MP

    Je sors maintenant et ne verrai ta réponse que vers 14 heures.

  5. #5
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    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 336
    Points : 718
    Points
    718
    Par défaut
    allons-y alors... C'est parti

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

Discussions similaires

  1. Traitement d'images : quel langage?
    Par belasri dans le forum Langages de programmation
    Réponses: 19
    Dernier message: 07/10/2005, 09h59
  2. Besoin d'aide pour algorithme de traitement d'images
    Par Zenman94 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 07/04/2005, 14h31
  3. [VB6] centrer l'image d'arrière-plan de ma Form ?
    Par ghohm dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 29/04/2004, 01h58
  4. [VB6] mettre une image sur un boutton
    Par dim dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/02/2004, 01h28
  5. [VB6] Affichage d'image avec qlq contraintes
    Par youri dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h44

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