首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >canvas LineTo中的多色

canvas LineTo中的多色
EN

Stack Overflow用户
提问于 2012-05-13 21:20:30
回答 1查看 6.4K关注 0票数 5
代码语言:javascript
复制
function TrackGraphic(model, canvas) {
    //TrackModel
    this._model = model;
    this.draw = function(context) {
        var dx = Math.cos(this._model.startAngle + Math.PI / 2);
        var dy = Math.sin(this._model.startAngle + Math.PI / 2);

        context.beginPath();
        context.lineWidth = 10;
        context.moveTo(this._model.offsetX, this._model.offsetY);
        //CurvePoint
        var p;
        for (var d = 0; d < this._model.length; d += 1) {
            if (d > 1000) {

                console.log('2F2F2F');
                context.strokeStyle = "#2F2F2F" //"rgb(255,165,0)"; //0x2F2F2F

            } else {
                context.strokeStyle = "#FFF" //"rgb(255,165,0)"; //0x2F2F2F;
                console.log('FFFFFF');


            }
            p = this._model.getTrackPoint(d);
            context.lineTo(this._model.offsetX + p.x, this._model.offsetY + p.y)
        }
        context.stroke();
    }
}​

上面的代码在画布中生成线条。线条是一种颜色,我想在一开始或在任何市政的颜色是不同的。我的代码不工作:(为什么?如何修复它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-13 23:37:08

在构建路径时更改颜色不会产生任何影响。该颜色仅在调用stroke()时应用一次,因此您设置的最后一个strokeStyle将是整行的颜色。

beginPath()moveTo()lineTo()等仅创建路径,且路径本身没有颜色。描边或填充该路径只会应用一种颜色。

如果你想要一个有多种颜色的路径,你必须做以下两件事之一:

开始一条路径,做一些行,用一种颜色描画它,然后开始另一条用不同颜色描边的路径。换句话说:

代码语言:javascript
复制
// make a red line segment
ctx.beginPath();
ctx.moveTo(x, y);
ctx.lineTo(x, y);
ctx.strokeStyle = 'red';
ctx.stroke();
// Begin a new path and make this line segment green
ctx.beginPath();
ctx.moveTo(x, y);
ctx.lineTo(x, y);
ctx.strokeStyle = 'green';
ctx.stroke();
//etc

或者,根据您正在做的事情,您也可以使用linearGradient

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10572083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档