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 canvas


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut Utilisation de canvas
    Bonjour,

    j'essaie de me familiariser avec la balise canvas d'html mais sans succès.

    Ici, je voudrais bêtement tracer deux lignes sur toute la longueur de mon canvas.

    Sauf que je n'en ai qu'une seule qui est tracé et qu'elle n'a pas la dimension que je voudrais.
    Les tentatives de modifications que j'ai faite sur les distances ne changent rien...

    Quelque chose m'échappe visiblement, en espérant que vous pourrez y voir plus clair que moi^^


    Html

    Code html : 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
    <html>
    	<head>
    		<title>Editeur de kifu</title>
    		<meta charset="UTF-8">
    		<meta name="description" content="Jeu de go: Kifu en ligne">
    		<link rel="stylesheet" href="index.css">
    		<script type="text/javascript" src="index.js"></script>
    	</head>
     
    	<body onload="test();">
    		<h1>Editeur Kifu</h1>
    		<div id="info">Info</div><!-- Zone d'en-tete info partie --> 
    		<br/>
    		<div id="goban"><canvas id="myCanvas">
        		Votre navigateur ne supporte pas canvas.
    		</canvas></div><!-- Zone graphique --> 
    		<br/>
    		<div id="coupSup">Coup Sup</div><!-- Zone pour les coups qui ne peuvent être montré sur goban car pierre déjà joué avant et capturé par la suite --> 
     
    	</body>
    </html>

    Css

    Code css : 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
    h1{
    	text-align: center;
    }
     
    #info{
    	border-style: solid;
        border-width: 2px;
    }
     
    #goban{
    	border-style: solid;
        border-width: 2px;
    }
     
    #coupSup{
    	border-style: solid;
        border-width: 2px;
    }
     
    #myCanvas{
    	width:500px; 
    	height:500px;
    	border:1px solid red;
    	margin-left: 25%;
    	margin-top: 1%;
    	margin-bottom: 1%;
    }


    Javascript

    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
    function drawLine(x0,y0,xdest,ydest){
     
    canvas = document.getElementById("myCanvas"); 
    if (canvas.getContext)
    {    
        context = canvas.getContext('2d'); 
    }
     context.beginPath();
     context.fillStyle='black';
     context.lineWidth=1;
     context.moveTo(x0,y0);
     context.lineTo(xdest,xdest);
     context.stroke(); 
     return context;
    }
     
    function drawLine2(context,x0,y0,xdest,ydest){
     context.fillStyle='black';
     context.lineWidth=1;
     context.moveTo(x0,y0);
     context.lineTo(xdest,xdest);
     context.stroke();
     return context; 
    }    
     
    function test(){
    	context=drawLine(0,0,0,500);
    	drawLine2(context,26,0,26,500);
    }
    Merci à vous !

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    vous vous êtes trompé dans "lineTo(xdest,ydest);" vous avez mis 2 fois "xdest"

    et vous pouvez factoriser votre code comme cela :
    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
    var context;
     
    function test() {
        initialiserContext();
     
        drawLine(0,  0,  0, 500);
        drawLine(26, 0, 26, 500);
    }
     
     
    function initialiserContext() {
        var canvas = document.getElementById("myCanvas"); 
     
        if (canvas.getContext)
        {
            context = canvas.getContext('2d'); 
        }
    }
     
     
    function drawLine(x0, y0, xdest, ydest) {
     
        context.beginPath();
        context.fillStyle = 'black';
        context.lineWidth = 1;
        context.moveTo(x0, y0);
        context.lineTo(xdest, ydest);
        context.stroke();
     
    }
    http://jsbin.com/jasufaximi/edit?js,console,output

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut
    Ahh fichtre j'ai honte, ça m'avait échappé :'(

    Merci beaucoup Mathieu !

    DU coup j'ai une autre question, est-ce normal que les deux traits ne me semblent pas avoir le même design ?

    Alors qu'ils sont me semblent ils construit de la même façon...

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    c'est peut-être parce que le 1er trait à gauche est au bord du cadre donc il est un peu caché

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut
    Pas vraiment en fait,

    pour se rendre compte du problème, j'ai modifié la largeur du trait et là on voit clairement que l'on a deux objets différents pourtant issus de la même fonction

    (en reprenant votre code et passant le width à 10)

    Nom : 1472902529-capture.png
Affichages : 125
Taille : 851 octets

    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
     
    var context;
     
    function test() {
        initialiserContext();
     
        drawLine(0,  0,  0, 500);
        drawLine(26, 0, 26, 500);
        drawLine(52, 0, 52, 500);
    }
     
     
    function initialiserContext() {
        var canvas = document.getElementById("myCanvas"); 
     
        if (canvas.getContext)
        {
            context = canvas.getContext('2d'); 
        }
    }
     
     
    function drawLine(x0, y0, xdest, ydest) {
     
        context.beginPath();
        context.fillStyle = 'black';
        context.lineWidth = 10;
        context.moveTo(x0, y0);
        context.lineTo(xdest, ydest);
        context.stroke();
     
    }

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par mathieu Voir le message
    c'est peut-être parce que le 1er trait à gauche est au bord du cadre donc il est un peu caché
    Citation Envoyé par Amnael Voir le message
    Pas vraiment en fait,
    Et pourtant si !

    On voit bien que l'épaisseur de la ligne de gauche est la moitiée de l'épaisseur des 2 autres : parce que la moitiée de l'épaisseur de cette ligne est en dehors de la partie visible du canvas.

    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function test() {
        initialiserContext();
     
        drawLine(5,  0,  0, 500);
        drawLine(31, 0, 26, 500);
        drawLine(57, 0, 52, 500);
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [Débutant] Utilisation du Canvas
    Par DotNET74 dans le forum Windows Phone
    Réponses: 30
    Dernier message: 29/06/2012, 09h31
  2. [HTML 5] Utilisation des Canvas dans un exemple précis
    Par 3logy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/10/2011, 20h49
  3. Utilisation d'un canvas et d'une div combiné
    Par rei.uchiwa dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 13/05/2010, 04h59
  4. [JavaScript] Formes en 3D en utilisant le Canvas ou le VML pour IE
    Par circular17 dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/04/2010, 11h58
  5. Réponses: 8
    Dernier message: 10/11/2009, 09h44

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