如何使用alpha = 0
繪製HTML5畫布?想象一下,我正在製作一個photoshop克隆,我有一層純紅色的圖層。我選擇橡皮擦工具並繪製。它吸取了rgba(0,0,0,0)
讓我看透了背景。我如何在HTML5 Canvas中做到這一點?如何在HTML5畫布中使用alpha = 0繪製「擦除」
這是一些代碼。
var rand = function(v) {
return Math.random() * v;
};
var canvas = document.getElementsByTagName("canvas")[0];
var ctx = canvas.getContext("2d");
// fill the canvas with black
ctx.fillStyle = "red";
ctx.fillRect(0, 0, canvas.width, canvas.height);
// Erase some circles (draw them in 0,0,0,0);
ctx.fillStyle = "rgba(0,0,0,0)";
ctx.globalCompositeOperation = "copy";
for (var ii = 0; ii < 5; ++ii) {
ctx.beginPath();
ctx.arc(rand(canvas.width), rand(canvas.height),
rand(50) + 20, 0, 360, false);
ctx.fill();
}
/*
source-over
source-in
source-out
source-atop
destination-over
destination-in
destination-out
destination-atop
lighter
darker
copy
xor
*/
canvas {
margin: 10px;
border: 1px solid black;
background-color: yellow;
}
<div>Want red with yellow circles</div>
<canvas></canvas>
這是行不通的。所有畫布操作都被認爲是無限大,這意味着將設置爲「複製」的每個圓(圓弧)globalCompositeOperation
有效地擦除每個圓圈之外的所有內容。
我可能可以設置剪裁以匹配圓,但理想情況下,我希望能夠用消除鋸齒的圓圈擦除,與Photoshop筆刷相同。
你能解釋這是如何工作的?繪製「擦除」圓之前,我的小提琴中的畫布是255,0,0,255。 rgba(0,0,0,1)= 0,0,0,255。 alpha如何變爲0?只有來自源的255個選擇或來自目的地的255個選擇。 – gman
你是什麼意思_「alpha如何變成'0'?_?你的意思是在畫布的位置X處的alpha變爲'0'?在這種情況下,這就是[globalCompositeOperation'工作原理](https://developer.mozilla.org/samples/canvas-tutorial/6_1_canvas_composite.html)。使用''destination-out'',它會將已繪製的形狀從現有畫布中「剪切」出來。 – Cerbrus
[這是更好的鏈接。](https://developer.mozilla.org/en-US/docs/HTML/Canvas/Tutorial/Compositing?redirectlocale=en-US&redirectslug=Canvas_tutorial%2FCompositing) – Cerbrus