1
通常,爲了從出另一個使用Canvas切一種形狀,我使用掌握globalCompositeOperation選項「XOR」:當形狀部分透明時,如何在Canvas中從另一個形狀(XOR)切出一個形狀?
var c2 = document.getElementById('canvas').getContext('2d');
c2.globalCompositeOperation = "xor";
c2.fillRect(0, 0, 200, 200);
c2.fillRect(170, 0, 30, 30); // shape 2 is cut out from shape 1
然而,當無論是填充樣式具有α值1 <,或上下文的globalAlpha的是< 1,「切出」形狀不再是完全看不見的。
具體而言,如果alpha大於0.5並且< 1,您會看到形狀較輕的版本。如果alpha是0.5,那麼根本沒有可見的切口。如果α爲0,0,我們得到相反的結果:應該切出的形狀實際上比第一形狀更暗。
這可以在http://jsfiddle.net/N7aXY/2/看到。
您可以嘗試更改alpha值以查看不同的效果。
有沒有什麼辦法可以完全切出一個形狀,當背景形狀有一個阿爾法< 1?
嗯,這是一個相當聰明「的hackish」的解決方案,但我擔心保存和重新粉刷PNG圖像的效率。這是我希望能夠每秒做很多次的事情 - 您可以在http://concord-consortium.github.com/agentscript/models/global-climate.html上看到我的用例(單擊其中一個點擊右下方的按鈕)。我會對此進行一些實驗,但它似乎應該是「適用於」畫布的東西...... – 2013-03-22 22:08:29