Dessiner des lignes pointillées sur une toile HTML5?

je voudrais dessiner quelques lignes pointillées sur la toile HTML5. Mais je n'ai pas pu trouver une telle caractéristique. le chemin de la toile ne pouvait que tracer des lignes solides. Et les gens ont essayé d'utiliser une fonction de bordure (pointillée, tiretée) dans CSS pour dessiner des lignes tiretées, mais elles ne pouvaient être qu'horizontales ou verticales. Donc, je suis coincé sur cette. J'ai aussi trouvé une bibliothèque appelée RGraph et il pourrait dessiner des lignes en pointillés. Mais utiliser une bibliothèque externe rendrait le dessin vraiment lent. Ainsi que tout corps a un idée de comment mettre en œuvre cela? Toute aide sera appréciée.

21
demandé sur April Lee 2013-03-14 01:41:15

5 réponses

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.setLineDash([5, 3]);/*dashes are 5px and spaces are 3px*/
ctx.beginPath();
ctx.moveTo(0,100);
ctx.lineTo(400, 100);
ctx.stroke();

JsFIDDLE

32
répondu Jignesh Variya 2017-04-12 10:12:22

POUR INFORMATION - les lignes pointillées et tiretées font partie de nouvelles caractéristiques de la toile qui sont maintenant dans le spec - et déjà implémentés dans Chrome:

http://www.rgraph.net/blog/2013/january/html5-canvas-dashed-lines.html

16
répondu Richard 2013-03-17 18:40:07

C'est une façon plus facile de créer des lignes tiretées :

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

ctx.setLineDash([5, 15]);

ctx.beginPath();
ctx.moveTo(0,100);
ctx.lineTo(400, 100);
ctx.stroke();

J'espère que ça aidera.

14
répondu API 2015-03-12 18:15:02

Vous pouvez utiliser le setLineDash() méthode.

context.setLineDash([2,3]);

http://www.rgraph.net/blog/2013/january/html5-canvas-dashed-lines.html

8
répondu matthew 2015-06-22 22:45:05

dessin lignes tiretées sur toile

je vous offre ce jusqu' comme solution complète, mais comme moyen simple de tracer une ligne pointillée entre 2 points (une ligne à n'importe quel angle). Il dessine très vite.

Vous pouvez le modifier pour répondre à vos besoins d'une ligne pointillée. Dessin tirets ne devrait pas ralentir le dessin.

Voici le code et un Violon: http://jsfiddle.net/m1erickson/pW4De/

        var canvas=document.getElementById("canvas");
        var ctx=canvas.getContext("2d");

        DrawDottedLine(300,400,7,7,7,20,"green");

        function DrawDottedLine(x1,y1,x2,y2,dotRadius,dotCount,dotColor){
          var dx=x2-x1;
          var dy=y2-y1;
          var spaceX=dx/(dotCount-1);
          var spaceY=dy/(dotCount-1);
          var newX=x1;
          var newY=y1;
          for (var i=0;i<dotCount;i++){
                  drawDot(newX,newY,dotRadius,dotColor);
                  newX+=spaceX;
                  newY+=spaceY;              
           }
           drawDot(x1,y1,3,"red");
           drawDot(x2,y2,3,"red");
        }
        function drawDot(x,y,dotRadius,dotColor){
            ctx.beginPath();
            ctx.arc(x,y, dotRadius, 0, 2 * Math.PI, false);
            ctx.fillStyle = dotColor;
            ctx.fill();              
        }
4
répondu markE 2013-03-13 22:39:16