Test sur les picturebox

Résolu
dj_sanka Messages postés 13 Date d'inscription samedi 12 mai 2007 Statut Membre Dernière intervention 5 décembre 2007 - 13 mai 2007 à 01:43
dj_sanka Messages postés 13 Date d'inscription samedi 12 mai 2007 Statut Membre Dernière intervention 5 décembre 2007 - 13 mai 2007 à 11:51
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
13 mai 2007 à 09:46
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
*/
3
dj_sanka Messages postés 13 Date d'inscription samedi 12 mai 2007 Statut Membre Dernière intervention 5 décembre 2007
13 mai 2007 à 11:06
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
0
dj_sanka Messages postés 13 Date d'inscription samedi 12 mai 2007 Statut Membre Dernière intervention 5 décembre 2007
13 mai 2007 à 11:51
            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
0
Rejoignez-nous