使用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';
}
有人能给我指出正确的方向吗比如设置一个属性或者调用一个函数来改变透明度?
一些使用globalAlpha的简单示例代码:
ctx.save();
ctx.globalAlpha = 0.4;
ctx.drawImage(img, x, y);
ctx.restore();
如果你需要加载img:
var img = new Image();
img.onload = function() {
ctx.save();
ctx.globalAlpha = 0.4;
ctx.drawImage(img, x, y);
ctx.restore()
};
img.src = "http://...";
注:
将'src'设置在最后,以确保在所有平台上调用onload处理程序,即使图像已经在缓存中。
在保存和恢复之间包装诸如globalAlpha之类的更改(实际上经常使用它们),以确保您不会从其他地方破坏设置,特别是当从事件中调用绘图代码时。
我认为这最好地回答了问题,它实际上改变了已经画出来的东西的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 );
}
一些使用globalAlpha的简单示例代码:
ctx.save();
ctx.globalAlpha = 0.4;
ctx.drawImage(img, x, y);
ctx.restore();
如果你需要加载img:
var img = new Image();
img.onload = function() {
ctx.save();
ctx.globalAlpha = 0.4;
ctx.drawImage(img, x, y);
ctx.restore()
};
img.src = "http://...";
注:
将'src'设置在最后,以确保在所有平台上调用onload处理程序,即使图像已经在缓存中。
在保存和恢复之间包装诸如globalAlpha之类的更改(实际上经常使用它们),以确保您不会从其他地方破坏设置,特别是当从事件中调用绘图代码时。