微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以通过HTML5 Canvas中的字符文本颜色来做吗?

HTML Canvas中,我可以使用ctx.fillStyle =’red’设置一行文本的颜色,这很棒.我想要做的是能够通过字母设置颜色,只需要画一次字.

因此,如果文本是’Hello different colors!’,有没有办法让字母H变成红色,但文本的其余部分是白色的?

解决方法

我告诉你这个解决方法.基本上你一次输出一个字符,并使用内置的measureText()函数来确定每个字母的宽度.然后我们将我们想要绘制的位置偏移相同的数量.您可以修改代码段,以产生所需的效果.

假设我们有这样的HTML:

<canvas id="canvas" width="300" height="300"/>

和Javascript一样:

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

function randomColor(){
    var r = Math.floor(Math.random()*256);
    var g = Math.floor(Math.random()*256);
    var b = Math.floor(Math.random()*256);
    return "rgb("+ r + "," + g + "," + b +")";
}

function texter(str,x,y){
    for(var i = 0; i <= str.length; ++i){
        var ch = str.charat(i);
        ctx.fillStyle = randomColor();
        ctx.fillText(ch,y);
        x += ctx.measureText(ch).width;
    }
}

texter("What's up?",10,30);

我们得到一个输出

在行动at jFiddle中查看它.我使用了最新的Chrome.

原文地址:https://www.jb51.cc/html5/168552.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。