createRadialGradient和透明度

时间:2011-04-02 21:06:01

标签: transparency gradient html5-canvas radial-gradients

我在HTML5画布上玩createRadialGradient()。它的作用就像一个魅力,除非我试图实现(半透明)。

我让这个jsFiddle让事情变得更加清晰:http://jsfiddle.net/rfLf6/1/

function circle(x, y, r, c) {
    ctx.beginPath();
    var rad = ctx.createRadialGradient(x, y, 1, x, y, r);
    rad.addColorStop(0, c);
    rad.addColorStop(1, 'transparent');
    ctx.fillStyle = rad;
    ctx.arc(x, y, r, 0, Math.PI*2, false);
    ctx.fill();
}

ctx.fillRect(0, 0, 256, 256);

circle(128, 128, 200, 'red');
circle(64, 64, 30,    'green');

正在发生的是圆形(径向渐变)在(x, y)处绘制,半径为r,颜色停止为r'transparent'。但是,绿色圆圈从绿色变为黑色,而它应该变为透明,即背景圆的适当红色。

如何在HTML5画布上实现透明的径向渐变?

1 个答案:

答案 0 :(得分:11)

好吧,既然你问过:

我对使用JavaScript <canvas>了解不多,但我确实知道CSS3渐变,而使用透明度的常用方法是使用rgba颜色。

要使渐变“淡出”为透明,您可以添加相同颜色的透明版本。

这就是我在这里所做的:http://jsfiddle.net/thirtydot/BD3xA/