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

C# Discussion :

Déplacement d'une image sur un écran en C#


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Points : 18
    Points
    18
    Par défaut Déplacement d'une image sur un écran en C#
    Bonjour à tous,

    Je suis actuellement en train de développer un logiciel où je dois faire déplacer des images. Celle-ci sont placées dans des pictureBox. Elles doivent se déplacer aléatoirement sur l'écran (en horizontal, vertical, diagonal). L'image se déplace bien mais lorsqu'elle tape sur l'un des 4 coins de ma richTextBox, le déplacement ne se fait plus correctement. Par exemple si elle tape en haut à droite, l'image repart sur la gauche en horizontal puis sort de l'écran où alors repart sur la droite toujours en horizontal.
    Je vous montre un peu le code que j'ai utilisé :

    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
     
    // Déplacement de l'image en "diagonale" (vers le bas et la droite)
                Image_Choisie.Top = Image_Choisie.Top + Vertical;
                Image_Choisie.Left = Image_Choisie.Left + Horizontal1;
     
                //-----------------------------------------
                //On teste l'endroit où l'image a tapé
                //-----------------------------------------
                // Si l'image touche le côte gauche de la feuille :
                // on repart vers la droite...
                if (Image_Choisie.Left < 0)
                    Horizontal1 = -1 * Horizontal1;
                else
                {
                    // Si l'image touche le côte droit de la feuille :
                    //on repart vers la gauche...
                    if (Image_Choisie.Left + Image_Choisie.Width + 20 > richTextBox1.Width)
                        Horizontal1 = -1 * Horizontal1;
                    else
                    {
     
                        // Si l'image touche le haut de la feuille : 
                        // on repart vers le bas
                        if (Image_Choisie.Top < 100)
                        {
                            Vertical = -1 * Vertical;
                        }
                        else
                        {
                            // Si l'image touche le bas de la feuille : 
                            // on repart vers le haut
                            if (Image_Choisie.Top + Image_Choisie.Height > 510)
                            {
                                Vertical = -1 * Vertical;
                            }
                        }
                    }
                }
    J'aurais voulu savoir si mon code était correcte ou si vous saviez comment je peux déplacer une image plus simplement et surtout un déplacement qui marche ^^
    Je vous remercie d'avance pour votre aide.

  2. #2
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    A mon avis, il y a un problème d’algorithme. Tu imbriques tes conditions. Je comprends ton besoin comme étant des cas indépendants les uns des autres.
    Pour moi il faut faire des "else if"

    Si bord gauche alors ...
    Sinon si bord droit alors ...
    Sinon si bord haut alors ...
    Sinon si bord bas alors ...
    Sinon rien (facultatif)
    Pour ce qui est tapé dans un coin, il faut que le coin de ton image soit exactement dans le coin de ton conteneur. C'est un cas rarissime. Soit tu l'ignores et dans ce cas, tu arrives effectivement à un mouvement potentiellement non voulu. Soit tu imbriques dans tes 4 clauses principales les tests qui permettent de savoir un deuxième bord est touché.

    Ainsi tu as quelque chose du genre

    Si bord gauche
    {
    Si Bord haut alors repart vers le bas ...
    Sinon si Bord bas alors repart vers le haut ...

    repart vers la droite. (toujours exécuté !!!)
    }
    Dans ces cas, tu as 3 directions possibles : vers la droite, vers haut+droite, vers bas+droite.

    Ensuite il devrait être possible de jouer avec les angles d'incidence. Ton comportement serait alors celui d'un billard. Peut-être pourrais-tu trouver des aides pour coder un billard, ce qui convient à ton problème.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Points : 18
    Points
    18
    Par défaut
    Merci à vous pour votre aide.
    Je n'ai en effet pas dissocié mes directions, du coup, ça partait pas dans le bon sens lorsque l'image tapait dans un coin. J'ai changé mon code en ne faisant as de if imbriqué et en effet, cela marche beaucoup mieux.
    Encore merci

  4. #4
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    ça vaut bien un +1 non ?
    lol

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 20/01/2015, 16h17
  2. problème d'une image sur écran plasma
    Par kardel dans le forum Débuter
    Réponses: 1
    Dernier message: 05/05/2011, 13h36
  3. limite de déplacement d'une image sur hover
    Par SpaceFrog dans le forum jQuery
    Réponses: 1
    Dernier message: 11/08/2010, 10h19
  4. Réponses: 30
    Dernier message: 19/03/2010, 00h06
  5. Afficher une image sur un écran 3D.
    Par pan99 dans le forum 3D
    Réponses: 1
    Dernier message: 16/04/2007, 13h48

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