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 :

Utilisation de range et canvas


Sujet :

JavaScript

  1. #1
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut Utilisation de range et canvas
    Je débute en javascript et je me fais la main avec la balise canvas. J'avais besoin de faire une petite boîte à couleurs avec pour l'instant trois sliders et un un affichage dans un canvas. Ci-joint ce que j'ai essayé de faire :
    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
     
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <meta http-equiv="X-UA-Compatible" content="IE=edge" />
            <title>boîte à couleurs</title>
        </head>
        <body>
            <canvas id="canvas" width="1024" height="350">
                <p> votre navigateur ne supporte pas Canvas. Mettez-le à jour</p>
            </canvas>
            <p>
                <input type= "range" id="rouge" min="0" max="255" value="0" step="1"  onchange="dessiner()">
                <input type= "range" id="vert" min="0" max="255" value="0" step="1"   onchange="dessiner()">
                <input type= "range" id ="bleu" min="0" max="255" value="0" step="1"  onchange="dessiner()">
            </p>
     
              <script>
                var canvas = document.getElementById("canvas");
                var ctx = canvas.getContext('2d');
                var curR = document.getElementById("rouge");
                var curV = document.getElementById("vert");
                var curB = document.getElementById("bleu");
     
                function dessiner()
                {
                    ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
                    drawpanel();
                }
     
                function drawpanel() {
                    var coul = 256 * 256 * curR.value + curV.value * 255 + curB.value * 1;
                    ctx.fillStyle = '#' + coul.toString(16);
                    ctx.fillRect(10, 10, 300, 300);
                }
                window.onload=drawpanel;
            </script>
     
        </body>
    </html>
    L'affichage à l'air de se faire mais j'ai beaucoup d'erreurs de modif de couleurs lorsque je fais fonctionner les curseurs.
    Est-ce que vous pouvez me corriger...je pense qu'il doit y avoir des erreurs de codage.
    Ce n'est pas évident quand on se lance dans un nouveau langage...

    Merci pour votre aide

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    tu peux faire quand même plus simple en passant par la couleur exprimée en rgb ou rgba
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ctx.fillStyle = 'rgb(' + curR.value + ',' +curV.value +',' +curB.value +')';

  3. #3
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    oui mais je veux afficher la valeur en hexa après, c'est pour ça que j'ai besoin de ma variable coul...


    sinon, ça plante grave, ce n'est pas top ! pas toujours de réaction du curseur quand je les déplace...

    merci pour ta réponse

  4. #4
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Oups, je viens de remplacer par rgb() . Pour affecter le filllStyle, c'est en effet nettement plus efficace !

    merci résolu ( je ne pensais pas que le fait de passer par la valeur hexadécimale plutôt que par les valeurs décimales me donnerait un tel ralentissement...)

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Tu aurais également pu passer par une fonction de conversion de rgb to hex, il doit en exister des milliers sur la toile.

  6. #6
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut canvas slide input Mozilla bug onchange event on input type=range is handled differently across browsers
    Salut juste un rajout pour le problème d'asynchrone sur l'input lorsqu'on a ce genre de slide sous firefox il y a un petit patch rajouter car l'événement onchange présente un bug sous FF.
    Le trigger de l’événement se déclenche après relâchement et pas lors de mouvement slide.

    Un petit event propre a Firefox, Safari and Chrome,

    https://bugzilla.mozilla.org/show_bug.cgi?id=853670

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type= "range" id="rouge" min="0" max="255" value="0" step="1" oninput="dessiner()" onchange="dessiner()">

  7. #7
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Merci à vous deux pour le complément...

    @+

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

Discussions similaires

  1. [XL-2003] Pouvoir utiliser un range en parametre sans passer un nom de feuille
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/05/2011, 11h15
  2. [XL-2010] utiliser "If .Range("I" & f).Value <> 0 Then" avec plusieur arguments
    Par nunnu27 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 10/09/2010, 09h40
  3. [MFC/Excel] Comment utiliser un Range ?
    Par SmOkEiSBaD dans le forum MFC
    Réponses: 2
    Dernier message: 14/05/2008, 14h00
  4. [VBA-E] Basique mais comment utiliser un range ?
    Par epfyffer dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/03/2007, 12h15
  5. [VBA-E] Utiliser le range dans un tab croisé dynamique
    Par GoLDoZ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/03/2006, 16h12

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