gpt4 book ai didi

javascript - HTML 5 Canvas 填充颜色

转载 作者:行者123 更新时间:2023-11-30 17:48:31 24 4
gpt4 key购买 nike

我在使用以下脚本时遇到问题

var ctx = demo.getContext('2d'),
w = demo.width,
h = demo.height,
img = new Image,
url = 'http://i.imgur.com/1xweuKj.png',
grd = ctx.createLinearGradient(0, 0, 0, h);

grd.addColorStop(0, 'rgb(0, 130, 230)');
grd.addColorStop(1, 'rgb(0, 20, 100)');

img.onload = loop;
img.crossOrigin = 'anonymous';
img.src = url;

function loop(x) {
/// since we will change composite mode and clip:
ctx.save();

/// clear background with black
ctx.fillStyle = '#000';
ctx.fillRect(0, 0, w, h);

/// remove waveform, change composite mode
ctx.globalCompositeOperation = 'destination-atop';
ctx.drawImage(img, 0, 0, w, h);

/// fill new alpha, same mode, different region.
/// as this will remove anything else we need to clip it
ctx.fillStyle = grd;
ctx.rect(0, 0, x, h);
ctx.clip(); /// et clipping
ctx.fill(); /// use the same rect to fill

/// remove clip and use default composite mode
ctx.restore();

/// loop until end
}

当我执行 loop(40) 时,这会起作用,然后如果我执行 loop(50) 时,它也会起作用,但是当我想给出更小的值时(比如 loop(20)) 比当前值不起作用。

谁能告诉我这里的问题是什么?

它适用于所有递增的值,但不适用于递减的值。

Check on jsfiddle

最佳答案

我找到了解决方法,现在工作正常。

我是通过ctx.beginPath();实现的

关于javascript - HTML 5 Canvas 填充颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com