使用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设置填充和笔触 colored颜色 来定义透明度.据我目前的结论,这似乎不会影响图像绘制.

//works with shapes but not with images
ctx.fillStyle = "rgba(255, 255, 255, 0.5)";

我得出的结论是,设置这globalCompositeOperation件作品是用图像来完成的.

//works with images
ctx.globalCompositeOperation = "lighter";

我想知道是否有第三种设置 colored颜色 的方法,这样我们可以给图像上色,使它们更容易透明.

EDIT:

进一步挖掘后,我得出结论,在绘制图像之前,可以通过设置globalAlpha参数来设置图像的透明度:

//works with images
ctx.globalAlpha = 0.5

如果你想在一段时间内实现一个淡入淡出的效果,你需要某种循环来改变alpha值,这是相当容易的,实现它的一种方法是setTimeout函数,查看它来创建一个循环,从中你可以随时间改变alpha值.

Html相关问答推荐

CSS属性不适用于IOS设备

Blazor中有1像素高行的表格

R中的动态Webscraping

我似乎不能正确地将我的导航栏居中'

在元素之间添加空格

带有多种 colored颜色 的HTML按钮

需要关于HTML的建议

IFRAME中的Chrome图像未调整大小

如何将功能附加到嵌入式药剂中的按钮?

HTML中的ARIA标签:在元素内部还是外部?(&Q;

Flex:第一个 div 有列,下一个 div 有行

如何保持块扩展以填充视口?

如何从 div 内的属性中提取 href 和文本

排列卡片时遇到困难

在Firefox中使用keySplines时,SVG: <animateMotion>不起作用

为什么每当我调整图片大小时它都会使我的其他元素移动

css 网格创建空行和列

如何在没有 JS 的情况下创建带搜索的 Select 菜单

我如何使用 HTML 和 CSS 在我的下拉菜单中获得这种类型的样式

如何向上移动图像并溢出图像的一部分而另一部分不溢出