나는 Processing.js로 캔버스의 투명도로 연주하고 있습니다.Processing.js에서 알파 채널 마스킹 - 캔버스에서 투명 영역 만들기
http://www.adamtindale.com/blog/processing/129/
이 스케치를 기반으로 :
http://www.openprocessing.org/sketch/74380
나는 다음과 같은 일을 만들려면 : 캔버스는 어떤 색으로 채워 져야 그것의 일부가되어야합니다이 튜토리얼을 읽고 나면 투명 (이 장소에서만 아래 웹 사이트를 볼 수 있음).
PGraphics를 MULTIPLY 모드로 블렌딩하면이 작업을 간단하게 수행 할 수 있다고 생각했습니다. 내가 자르고 자하는 영역은 마스크 Pgraphic에서 색상 (0, 0, 0, 0)으로 채워져 있으므로 아무 것도 곱하지 않으면 (0,0,0,0) - 즉 투명해야합니다.
그럼에도 불구하고 제대로 작동하지 않습니다. 코드는 I가 사용
PGraphics g;
void setup()
{
size(720, 480);
// create the mask
g = createGraphics(width,height, P2D);
}
void draw()
{
externals.context.clearRect(0,0,width,height);// part of the canvasAPI that creates a clear rect
fill(244,90,10,40);
rect(2,2,300,300);
// draw the mask
g.beginDraw();
g.stroke(255);
g.fill(0,0,0,0);
g.ellipse(100,100,150,150);
g.endDraw();
// apply the mask to the screen
blend(g,0,0, width,height, 0,0,width,height,MULTIPLY);
}
이 코드 해야 원형 구멍 (타원)과 반투명 오렌지 구형 결과.
누락되었거나 완전히 잘못된 방법이 있습니까?
Google 크롬 및 Opera에서 테스트되었습니다. 쿠분투 12.04.1
결과 내가 얻을 :
그건 내가 말하는 것에 정확히 맞지 않습니다. 내 캔버스가 투명하고 사각형에서 원을 자르는 것에 대해 이야기하고 있습니다. X 색상 (0,0,0,255) 이 어디 XXXXX 을 그리고 난이있어 : 그럼 나는이 같은 픽셀지도를 가지고 가정 해 봅시다 ABBA A와 B는 서로 다른 색상입니다 합니다. XOOX가 O = color (0,0,0,0) 인 결과를 가져올 이러한 작업을 수행하려고합니다. –
아, 볼 수 있습니다 .. 당신은 MULTIPLY 대신에 DARKEST를 사용해야합니다. 왜냐하면 원의 색만 "성공"하기를 원하기 때문입니까? 'DARKEST - 가장 어두운 색만 성공합니다 : C = min (A * factor, B)'그러나,해야 할 일을하지 않으면'blend'와 같이 보이는 것이'PGraphics'와 잘 맞지 않습니까 ?? 나는 알파 값이 생기면 지저분해진다 고 생각합니다. 그렇지 않으면 잘 작동하는 것 같습니다. – fartagaintuxedo