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

JavaScript Discussion :

<canvas> Décalage signature sur version mobile / Desktop OK


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Points : 64
    Points
    64
    Par défaut <canvas> Décalage signature sur version mobile / Desktop OK
    Bonjour,

    Je dois créer un canvas avec une signature que j'ai bien réalisé pour le format Desktop, mais en version mobile j'ai un énorme décalage0
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    class Canvas {
        constructor() {
            this.ctx = Dom.canvasElement.getContext('2d');
        }
     
        startDraw(e) {
            e.preventDefault();
            this.painting = true;
        }
     
     
        draw(e) {
            console.log('drawing...')
            if (!this.painting)
                return;
     
            this.ctx.lineWidth = 2;
            this.ctx.lineCap = "round";
            this.ctx.lineTo(e.offsetX, e.offsetY);
            this.ctx.stroke();
            this.ctx.beginPath();
            this.ctx.moveTo(e.offsetX, e.offsetY);
            Dom.validateElement.style.visibility = 'visible';
        }
     
        drawMobile(e) {
            e.preventDefault();
            this.touch = e.changedTouches[0];
            if (this.painting) {
                this.ctx.lineWidth = 2;
                this.ctx.lineCap = "round";
                this.ctx.lineTo(this.touch.clientX, this.touch.clientY);
                this.ctx.stroke();
                this.ctx.beginPath();
                this.ctx.fill();
                this.ctx.moveTo(this.touch.clientX, this.touch.clientY)
            }
        }
     
        finishDraw() {
            this.painting = false;
            this.ctx.beginPath();
        }
     
     
        eventSignature() {
            Dom.canvasElement.addEventListener("mousedown", this.startDraw.bind(this));
            Dom.canvasElement.addEventListener("mousemove", this.draw.bind(this));
            Dom.canvasElement.addEventListener("mouseup", this.finishDraw.bind(this));
            Dom.canvasElement.addEventListener('touchstart', this.startDraw.bind(this));
            Dom.canvasElement.addEventListener("touchmove", this.drawMobile.bind(this));
            Dom.canvasElement.addEventListener('touchend', this.finishDraw.bind(this));
        }
    }
     
    const myCanvas = new Canvas();
    myCanvas.eventSignature();]
    Le problème se pose lorsque le canvas n'est pas seul sur la page, c'est à dire que, si des éléments se trouvent au dessus du canvas (du texte, images, etc) il y a un décalage lorsqu'on signe.
    Etant donné que mon code fonctionne bien sans autre élément, j'en conclu que le code est bon.



    Içi le résultat avec un canvas seul sur la page :
    Nom : position curseur.png
Affichages : 167
Taille : 4,4 Ko




    içi la même chose avec du texte au dessus :
    Nom : position curseur2.png
Affichages : 154
Taille : 5,4 Ko

    Ce que je constate c'est que, en fonction de la hauteur de l'élément du dessus, la position du doigt et le trait aura pour valeur la même hauteur que l'élément du dessus. J'ai fait plusieurs tests et ça semble être le cas.

    J'aimerais savoir comment déduire cette hauteur (ce décalage). Je pense que le point d'origine change en fonction de la position du canvas......

    Je suis toujours en train de chercher de mon côté mais si vous avez des pistes je suis preneur.... merci d'avance !

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 013
    Points : 44 290
    Points
    44 290
    Par défaut
    Bonjour,
    à voir cette excellente discussion : Canvas signature (Js pur - POO)

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Points : 64
    Points
    64
    Par défaut
    Merci j'espère que ça va m'aider

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 013
    Points : 44 290
    Points
    44 290
    Par défaut
    Je t'ai retrouvé une réponse plus concise : <canvas> Récupérer la position de la souris

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Points : 64
    Points
    64
    Par défaut
    à voir cette excellente discussion : Canvas signature (Js pur - POO)
    Merci pour m'avoir reconduit vers ce travail, grâce à cela j'ai pu réadapter mon code et cela fonctionne.

    Je t'ai retrouvé une réponse plus concise : <canvas> Récupérer la position de la souris
    Je vais y jeter un coup d’œil, ça peut toujours servir

    Sujet Résolu

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/07/2018, 21h07
  2. Erreurs affichage sur version mobile en 3G/4G
    Par Ziigmund dans le forum Performance Web
    Réponses: 0
    Dernier message: 23/06/2015, 16h26
  3. Réponses: 6
    Dernier message: 12/07/2013, 11h32
  4. Infos sur le fichier desktop.ini
    Par Nemesys dans le forum Windows XP
    Réponses: 8
    Dernier message: 03/06/2006, 19h53
  5. Controle de la partie GSM sur un mobile
    Par waynegrown dans le forum Développement Mobile en Java
    Réponses: 4
    Dernier message: 23/05/2006, 18h06

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