none
Gestion de PictureBox dynamique en vb2010 RRS feed

  • Question

  • Bonjour,

    c'est ma 1ere intervention sur un site d'échange

    je me forme sur vb2010 et je voudrais afficher dynamiquement des picturebox dans une picturebox figée.

    ex : picturebox figée représentant un plan de ville et des picturebox dynamiques représentant des symboles de direction.

    suivant le trajet les symboles sont plus ou moins nombreux, et doivent avoir toutes les fonctions de l'objet

    j'ai fait :

    Dim cpt(100) as PictureBox 

    ' boucle sur nb de symboles associés au trajet

    for i=1 to NbSymb

    cpt(i) = new PictureBox

    cpt(i).left = X ' coordonnée

    cpt(i).top = Y ' coordonnée

    cpt(i).visible = True

    cpt(i).BringToFront()

    Next

    Le problème est que je ne vois que le dernier symbole traité !

    merci de votre aide, elle me permettra de ne pas m'arracher les cheveux ...

    jeudi 2 avril 2015 13:33

Réponses

  • Bonjour, en fait c’était plus une erreur de codage (manque de pratique)

    voici ce qui marche :

    Dim cpt(100) as PictureBox 

    ' boucle sur nb de symboles associés au trajet

    For i = 1 To NbSymb
               cpt(i) = new PictureBox
                Me.Controls.Add(cpt(i))
                cpt(i).left = X ' coordonnée
                cpt(i).top = Y ' coordonnée
                cpt1(i).Visible = True
                cpt1(i).BringToFront()
     Next

    merci

    Cordialement

    mercredi 15 avril 2015 12:07

Toutes les réponses

  • Bonjour,

    Au lieu d'utiliser x images, vous pouvez en utiliser une et dessiner dessus.

    Par exemple en C#, utilisez l'évênement Paint pour dessiner les panneaux.

    private void PICTBOXplan_Paint(object sender, PaintEventArgs e)
    {
    System.Drawing.PointF l_Pt1 = new System.Drawing.PointF(1.0F,10.0F);
    System.Drawing.PointF l_Pt2 = new System.Drawing.PointF(1.0F,10.0F);
    System.Drawing.Font l_Fonte = new System.Drawing.Font("BankGothic Lt BT", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    //Faire x fois en changeant les coordonnées ...
    e.Graphics.DrawLine(new Pen(Color.BlueViolet, 2.0F), l_Pt1, l_Pt2);
    e.Graphics.DrawString("sens unique", l_Fonte, new SolidBrush(Color.CadetBlue), 10, 10);
    }

    L'objet Graphics contient beaucoup de fonction de dessin.
    e.Graphics.DrawPath
    e.Graphics.DrawRectangle
    e.Graphics.DrawPolygon
    e.Graphics.DrawPie

    Cordialement
    Gérard

    vendredi 3 avril 2015 11:10
  • merci gerard pour la reponse
    • Proposé comme réponse GP79 mardi 7 avril 2015 13:14
    • Non proposé comme réponse GP79 mardi 7 avril 2015 13:43
    mardi 7 avril 2015 12:18

  • Bonjour Buvard,
     
    Est-ce que vous avez testé la solution proposée? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 14 avril 2015 10:50
    Modérateur
  • Bonjour, en fait c’était plus une erreur de codage (manque de pratique)

    voici ce qui marche :

    Dim cpt(100) as PictureBox 

    ' boucle sur nb de symboles associés au trajet

    For i = 1 To NbSymb
               cpt(i) = new PictureBox
                Me.Controls.Add(cpt(i))
                cpt(i).left = X ' coordonnée
                cpt(i).top = Y ' coordonnée
                cpt1(i).Visible = True
                cpt1(i).BringToFront()
     Next

    merci

    Cordialement

    mercredi 15 avril 2015 12:07