doubleyong
管理员
管理员
  • 最后登录2026-05-25
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:6721回复:0

[html]canvas 如何绘制不同颜色的直线

楼主#
更多 发布于:2018-07-10 11:00
canvas绘制直线的代码:
var mycanvas = document.getElementById("myCanvas");
     var context = mycanvas.getContext("2d"); //获取canvas 对象上下文, 参数只支持2d
        context.beginPath();
        context.moveTo(10,10);
        context.lineTo(150,150);
        context.lineWidth = 1;
        context.strokeStyle = "red";
        context.stroke();
绘制成功,没有问题

canvas连续绘制的折线
var mycanvas = document.getElementById("myCanvas");
       var context = mycanvas.getContext("2d"); //获取canvas 对象上下文, 参数只支持2d
          context.beginPath();
          context.moveTo(10,10);
          context.lineTo(150,150);
          context.lineWidth = 1;
          context.strokeStyle = "red";
          context.stroke();
          context.strokeStyle = "blue";
          context.lineTo(100,100);
          context.stroke();
          context.lineTo(170,300);
          context.strokeStyle = "green";
          context.stroke();
绘制成功,但是颜色却都是green,因为这里的后面strokeStyle属性会覆盖前面的strokeStyle属性,而stroke()方法的执行会绘制当前所有的状态。


canvas 绘制不同颜色的直线

因此呢,这里就需要使用beginPath()方法来重新进行一次全新的绘制。
注,全新绘制需要再重新设置moveTo,代码如下:
var mycanvas = document.getElementById("myCanvas");
    var context = mycanvas.getContext("2d"); //获取canvas 对象上下文, 参数只支持2d
       context.beginPath();
       context.moveTo(10,10);
       context.lineTo(150,150);
       context.lineWidth = 1;
       context.strokeStyle = "red";
       context.stroke();
       context.beginPath();
       context.moveTo(150,150);
       context.lineTo(100,100);
       context.strokeStyle = "blue";
       context.stroke();
       context.beginPath();
       context.moveTo(100,100);
       context.lineTo(170,300);
       context.strokeStyle = "green";
       context.stroke();
然后,就可以成功绘制不同颜色的直线。

如果你有更简单的方法,欢迎分享
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号