要使用透明面罩它的第一个必要采取两个图像中的一个,并把它正确合并两个图像到关闭屏幕帆布,并添加使用context.globalCompositeOperation = destination-out
每@ Tommyka的回答
var offscreen = document.createElement('canvas'); // detached from DOM
var context = offscreen.getContext('2d');
context.drawImage(image1, 0, 0, image1.width, image1.height);
var gradient = context.createLinearGradient(0, 0, 0, img.height);
gradient.addColorStop(0, "rgba(255, 255, 255, 0.5)");
gradient.addColorStop(1, "rgba(255, 255, 255, 1.0)");
context.globalCompositeOperation = "destination-out";
context.fillStyle = gradient;
context.fillRect(0, 0, image1.width, image1.height);
然后,为了真正合并两个图像,你个所需的透明面具恩需要将其他图像绘制到另一个画布,然后简单地画阿尔法复合屏幕外的画布上,最重要的是:
var onscreen = document.getElementById('mycanvas');
var context2 = onscreen.getContext('2d');
context2.drawImage(image2, 0, 0, image2.width, image2.height);
context2.drawImage(offscreen, 0, 0, onscreen.width, onscreen.height);
演示在http://jsfiddle.net/alnitak/rfdjoh31/4/
啊,我知道后,我忘了已经指定我知道如何创建一个渐变,如https://developer.mozilla.org/samples/canvas-tutorial/4_9_canvas_lineargradient.html,我会得到这个答案。不幸的是,这些仅适用于特定颜色。如果它的图像(非纯色)另一方面这种方法根本不起作用。 – mjrevel 2010-07-24 03:43:11
我回去看看图片,看看你现在想要什么。好问题。我想如果你在一个单独的画布中取出图像并检索图像数据,你可以对它应用渐变效果,然后覆盖它在原始画布上。我会玩一玩,看看我能想出什么。 – Castrohenge 2010-07-24 11:38:52
听起来不错,周末不需要太多时间来处理它,但我会看到我想到的。让我张贴在任何你想出来的东西上。我绝对想要解决这个问题。 – mjrevel 2010-07-25 03:18:18