使用HTML5 <canvas>元素,我想加载一个图像文件(PNG, JPEG等),将其完全透明地绘制到画布上,然后将其淡入。我已经弄清楚如何加载图像并将其绘制到画布上,但我不知道如何改变其不透明度。
这是我到目前为止的代码:
var canvas = document.getElementById('myCanvas');
if (canvas.getContext)
{
var c = canvas.getContext('2d');
c.globalAlpha = 0;
var img = new Image();
img.onload = function() {
c.drawImage(img, 0, 0);
}
img.src = 'image.jpg';
}
有人能给我指出正确的方向吗比如设置一个属性或者调用一个函数来改变透明度?
我认为这最好地回答了问题,它实际上改变了已经画出来的东西的alpha值。也许当这个问题被问到时,这不是api的一部分。
给定2d context c。
function reduceAlpha(x, y, w, h, dA) {
let screenData = c.getImageData(x, y, w, h);
for(let i = 3; i < screenData.data.length; i+=4){
screenData.data[i] -= dA; //delta-Alpha
}
c.putImageData(screenData, x, y );
}
你可以。透明画布可以通过使用目标输出全局合成操作快速褪色。它不是100%完美的,有时它会留下一些痕迹,但它可以调整,取决于什么需要(即使用'source-over',用alpha为0.13的白色填充它,然后褪色以准备画布)。
// Fill canvas using 'destination-out' and alpha at 0.05
ctx.globalCompositeOperation = 'destination-out';
ctx.fillStyle = "rgba(255, 255, 255, 0.05)";
ctx.beginPath();
ctx.fillRect(0, 0, width, height);
ctx.fill();
// Set the default mode.
ctx.globalCompositeOperation = 'source-over';