Test sur les picturebox [Résolu]

Signaler
Messages postés
13
Date d'inscription
samedi 12 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2007
-
Messages postés
13
Date d'inscription
samedi 12 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2007
-
comment peut ton verifier qu'un picturebox touche tout une autre picturebox on doit tester si les points de coordonees sont le mm je suis d'accord mais bon je n'y arrive quand mm pas

            pox = PBvoiture.Location.X;
            poy = PBvoiture.Location.Y;

            if (PBen1.Image!=null)
            {
                enx = PBen1.Location.X;
                eny = PBen1.Location.Y;
                if (eny < 470)
                {
                    eny = eny + 10;
                    PBen1.Location = new Point(enx, eny);

                    for (int j = 0; j < 11; j++)
                    {
                        if ((enx+29)==(pox+j))
                        {
                                timer1.Stop();
                                the_end fin = new the_end();
                                fin.ShowDialog();
                        }
                    }
                }
                else
                {
                    PBen1.Dispose();
                }
            }

ici je fais le teste sur l'axe x si je deplace mon vehicule donc PBvoiture(pox) va change de valuer jusqu'au momant ou il se trouve sur le mm axe que PBen1(enx+29) le +29 c'est pour la valeur de la largeur de ma picturebox comme sa il va entre dans le if et arrete le timer

mais si je fais sa

            pox = PBvoiture.Location.X;
            poy = PBvoiture.Location.Y;

            if (PBen1.Image!=null)
            {
                enx = PBen1.Location.X;
                eny = PBen1.Location.Y;
                if (eny < 470)
                {
                    eny = eny + 10;
                    PBen1.Location = new Point(enx, eny);

                    for (int j = 0; j < 11; j++)
                    {
                        if((enx+29)==(pox+j))
                        {
                             if ((eny + 51) == (poy))
                            {
                                timer1.Stop();
                                the_end fin = new the_end();
                                fin.ShowDialog();
                             }
                        }
                    }
                }
                else
                {
                    PBen1.Dispose();
                }
            }

ben il ne rente plus dans le if  mm si point de coordoner sont les mm

ou mm si je fais sa il ne rentre quand mm pas dans le if

            pox = PBvoiture.Location.X;
            poy = PBvoiture.Location.Y;

            if (PBen1.Image!=null)
            {
                enx = PBen1.Location.X;
                eny = PBen1.Location.Y;
                if (eny < 470)
                {
                    eny = eny + 10;
                    PBen1.Location = new Point(enx, eny);

                    for (int j = 0; j < 11; j++)
                    {
                        if (((eny + 51) == (poy + j))&&((enx+29)==(pox+j)))
                        {
                            timer1.Stop();
                            the_end fin = new the_end();
                            fin.ShowDialog();
                        }
                    }
                }
                else
                {
                    PBen1.Dispose();
                }
            }

enffet mon but serai juste de delimiter mes picturebox juste à leur taile et de verifier si une touche l'autre donc verifier si il y a bien a un moment donner un point du contour de PBvoiture qui est egale a un point du contour de PBen1 qui sont toute les deux des des picturebox de mm taille merci d'avance et j'attend vos propososition avec impatience.

3 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Salut,




Tu es parti dans la mauvaise direction : l'interface graphique doit être une représentation de l'état, pas l'état en lui même.
Voir Rectangle.IntersectWith.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
13
Date d'inscription
samedi 12 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2007

donc en gros le but est de remetre mes picturebox en rectangle puis voir si ils se touchent avec la fonction
rectangle.intersect(rectangle a, rectangle b) ok ben je vais essaie de faire sa et je te dirai quoi ok man
Messages postés
13
Date d'inscription
samedi 12 mai 2007
Statut
Membre
Dernière intervention
5 décembre 2007

            rectest = Rectangle.FromLTRB(0, 0, 0, 0);     
   
           pox = PBvoiture.Location.X;
            poy = PBvoiture.Location.Y;
            rectmp1 =Rectangle.FromLTRB(pox, poy, pox + 29, poy + 51);

            if (PBen1.Image!=null)
            {
                enx = PBen1.Location.X;
                eny = PBen1.Location.Y;
                rectmp2 = Rectangle.FromLTRB(enx, eny, enx + 29, eny + 51);

                if (eny < 470)
                {
                    eny = eny + 10;
                    PBen1.Location = new Point(enx, eny);

                    for (int j = 0; j < 11; j++)
                    {
                        rectresult=Rectangle.Intersect(rectmp1, rectmp2);
                         //if ((eny + 51) == (poy + j))
                        if(rectresult !=rectest )
                        {
                            timer1.Stop();
                            the_end fin = new the_end();
                            fin.ShowDialog();
                            break;
                        }
                    }
                }
                else
                {
                    PBen1.Dispose();
                }
            }
           
voila je fais sa comme sa et sa fonctionne merci poue le coup de main