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

Android Discussion :

Tracer une ligne d'un point à un autre


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut Tracer une ligne d'un point à un autre
    Bonjour,

    J'aimerai savoir si il est possible avec java android, de pouvoir tracer une ligne d'un point à un autre. pour le moment j'arrive a tracer une ligne mais seulement en faisant glisser mon doigt sur l’écran, j'aimerai savoir si on peut cliquer une première fois sur l’écran pour indiquer la position du point de départ et cliquer une seconde fois pour indiquer le point d'arrivé

    Merci

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Bonjour,

    Oui tu peux tracer une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Paint paint = new Paint();
    paint.setColor(Color.BLACK);
    canvas.drawLine(x1, y1, x2, y2, paint);
    Je pense que tu sais comment récupérer tes variables x1, y1, x2, y2 puisque tu sais dessiner en glissant ton doigt

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    Je vous remercie de votre réponse, mais elle ne réponds pas exactement à la mienne, car je sais qu'on peut dessiner une ligne comme cela mais ce que je voudrais savoir c'est au niveau des événements, mon code est le suivant :

    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
     
     
    public boolean onTouch(View v, MotionEvent event) {
    		v.performClick();
     
    		switch (event.getAction()) {
    		case MotionEvent.ACTION_DOWN:
    			startx = event.getX();
    			starty = event.getY();
    			return true;
    		case MotionEvent.ACTION_MOVE:
    			onTouchMove(event);
    			return true;
    		case MotionEvent.ACTION_UP:
    			endx = (float) (event.getX());
    			endy = (float) (event.getY());
    			nvlElt = Ligne
    					.LigneTest("Test", startx, starty, endx, endy, 10, 90);
    			command = new AddCommand(plan, nvlElt);
    			CommandManager.getInstance().execute(command);
    			plan.invalidate();
    			break;
    		}
    		return false;
    	}
    mais il me permet de tracer une ligne seulement en appuyant sur l’écran d'un point de départ à un point d'arriver sans relâcher mon doigt de l’écran. Ce que j'aimerai faire c'est appuyer une première fois sur l’écran et une deuxième fois et à partir de là que mon trait se dessine.

  4. #4
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Je pense que ton code est bon et que tu y es presque. Il suffit de l'améliorer un peu.
    Est ce que ce code te parle :

    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
     
    private boolean secondPoint = false;
    public boolean onTouch(View v, MotionEvent event) {
    		v.performClick();
     
    		switch (event.getAction()) {
    		case MotionEvent.ACTION_DOWN:
    			startx = event.getX();
    			starty = event.getY();
    			return true;
    		case MotionEvent.ACTION_MOVE:
    			onTouchMove(event);
    			return true;
    		case MotionEvent.ACTION_UP:
    			if (secondPoint)
    			{
    				endx = (float) (event.getX());
    				endy = (float) (event.getY());
    				nvlElt = Ligne
    						.LigneTest("Test", startx, starty, endx, endy, 10, 90);
    				command = new AddCommand(plan, nvlElt);
    				CommandManager.getInstance().execute(command);
    				plan.invalidate();
    				secondPoint = false;
    			}
    			else
    				secondPoint = true;
    			break;
    		}
    		return false;
    	}
    En gros, il te suffit d'ajouter un booleen afin de savoir si tu pointes le 1er ou le 2ème point.

    C'est à tester bien sûre.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    Merci pour la réponse, je viens de tester mais çà ne marche toujours pas c'est bizarre ...

  6. #6
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Je t'invite donc à debuguer et voir ce qui se passe.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    lorsque je debug il passe dans un premier temps dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    case MotionEvent.ACTION_DOWN:
    ...
    et ensuite va directement tout en bas a return false et çà ne fait rien d'autre, alors que lorsque je fais glisser mon doigt d'un point à un autre il passe bien dans le case ACTION_MOVE et la ligne se trace

  8. #8
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Et si tu remplaces ton :
    par
    ?

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    non plus çà ne change rien

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    J'arrive a dessiner des lignes mais seulement en faisant glisser mon doigt d'un point a un autre, je n'arrive toujours pas a le faire en cliquant sur un endroit de mon plan et en cliquant une deuxième fois, j'aimerai que ma ligne se trace. Egalement je voulais savoir si je pouvais tracer un trait et automatiquement lorsque je trace le suivant qu'il trace à la suite c'est a dire que sa position de départ sera la position finale du dernier trait tracé

  11. #11
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 078
    Points : 7 986
    Points
    7 986
    Par défaut
    Il te faut garder en mémoire l'état dans le quel tu es, soit :

    - Je clique et je suis dans l'état point départ puis je change l'état.
    - Je clique et je suis dans l'état point d'arriver (je trace ma ligne) puis je rechange l'état.

    Pour ton deuxième "problème" c'est presque pareil, il suffit de réfléchir un peu :

    - Je clique pour la premiere fois j'ai une cordonnée depart.
    - Je clique une 2 eme fois j'ai un cordonnée destination pour tracer ma ligne. Je garde en mémoire la position.
    - Je clique une 3 eme fois j'ai un cordonnée destination pour tracer ma ligne. Je garde en mémoire la position.
    - Etc...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Points : 84
    Points
    84
    Par défaut
    Je te remercie de ta réponse, j'ai réussi à tracer ma ligne, seulement j'aimerai maintenant pouvoir ajouter une autre ligne sur ma ligne, d'une autre couleur qui sera alors, dans mon cas la représentation d'une porte sur un mur. La première ligne que je trace représente un mur, je l'ai coloré en grise. J'ai suis actuellement en train d'essayer de faire cela mais j'ai du mal a l’insérer correctement. Car des que j'essaye de faire des murs en diagonale, pour insérer une porte dessus je fais pleins de condition pour que les points de ma porte soient compris entre les points de départ et d'arriver de mon mur.

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

Discussions similaires

  1. XNA - Tracer une ligne entre 2 points
    Par xrobbiex22 dans le forum C#
    Réponses: 0
    Dernier message: 30/04/2012, 15h01
  2. Tracer une ligne sur une image
    Par Guillaume602 dans le forum Windows
    Réponses: 5
    Dernier message: 05/01/2006, 20h33
  3. [VB.NET] Tracer une ligne (OnPaint)
    Par Emcy dans le forum Windows Forms
    Réponses: 6
    Dernier message: 24/03/2005, 13h09
  4. [FP]Tracer Une ligne avec Dev-pascal
    Par yffick dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 17/12/2003, 16h33
  5. Tracer une ligne droite sans les interruptions
    Par Stef784ever dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 25/11/2002, 01h22

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