Test sur les picturebox [Résolu]

dj_sanka 13 Messages postés samedi 12 mai 2007Date d'inscription 5 décembre 2007 Dernière intervention - 13 mai 2007 à 01:43 - Dernière réponse : dj_sanka 13 Messages postés samedi 12 mai 2007Date d'inscription 5 décembre 2007 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 13 mai 2007 à 09:46
3
Merci
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
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_coq
dj_sanka 13 Messages postés samedi 12 mai 2007Date d'inscription 5 décembre 2007 Dernière intervention - 13 mai 2007 à 11:06
0
Merci
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
Commenter la réponse de dj_sanka
dj_sanka 13 Messages postés samedi 12 mai 2007Date d'inscription 5 décembre 2007 Dernière intervention - 13 mai 2007 à 11:51
0
Merci
            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
Commenter la réponse de dj_sanka

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.