要使用透明面罩它的第一個必要採取兩個圖像中的一個,並把它正確合併兩個圖像到關閉屏幕帆布,並添加使用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