1. globalAlpha
globalAlpha 는 도형의 투명도를 설정합니다.
또 다른 방법으로는 윤곽선(strokeStyle) 또는 채움(fillStyle) 스타일에 반투명 색을 적용할 수도 있습니다.
globalAlpha = transparencyValue;
투명도 값이 설정되면 이후 캔버스에 그려지는 모든 도형들의 투명도가 바뀝니다.
설정하는 값은 0.0(완전히 투명)과 1.0(완전히 불투명) 사이에 있어야 하며, 초기 설정값은 1.0(완전히 투명)입니다.
globalAlpha 는 모두 같은 투명도로 캔버스에 많은 도형을 그릴 때 유용합니다. 하지만 보통은 각가의 도형마다 투명도롤 설정하는 것이 더 유용할 것입니다.
strokeStyle 과 fillStyle 값에 CSS rgba 색상값은 적용할 수 있으므로, 투명한 색을 적용하려면 아래와 같은 표기법을 사용할 수 있습니다.
ctx.strokeStyle = 'rgba(255, 0, 0, 0.5)';
ctx.fillStyle = 'rgba(255, 0, 0, 0.5)';
rgba() 함수는 rgb() 함수와 비슷하지만, 인자가 하나 더 있습니다. 마지막 인자는 투명도 값을 설정하는 인자입니다.
범위는 0.0(완전히 투명)에서 1.0(완전히 불투명) 입니다.
2. globalAlpha 예제
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
// 배경을 그린다
ctx.fillStyle = '#FD0';
ctx.fillRect(50, 50, 250, 250);
ctx.fillStyle = '#6C0';
ctx.fillRect(300, 50, 250, 250);
ctx.fillStyle = '#09F';
ctx.fillRect(50, 300, 250, 250);
ctx.fillStyle = '#F30';
ctx.fillRect(300, 300, 250, 250);
ctx.fillStyle = '#FFF';
// 투명값을 설정한다
ctx.globalAlpha = 0.2;
// 반투명한 원을 그린다
for (var i = 0; i < 7; i++) {
ctx.beginPath();
ctx.arc(300, 300, 30 + 30 * i, 0, Math.PI * 2, true);
ctx.fill();
}
}
네 가지의 다른 색을 가진 사각형을 배경으로 그렸습니다. 그리고 그 위에, 반투명한 원을 여러 개 그렸습니다.
globalAlpha 값을 0.2로 설정하면 이후 그려질 도형은 이 값을 사용합니다.
for 반복문을 사용하여 점점 큰 반지름의 원을 그려 원이 겹쳐지면서 점점 불투명하게 보이도록 만들었습니다.
3. rgba() 예제
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
// 배경을 그린다
ctx.fillStyle = 'rgb(255,221,0)';
ctx.fillRect(50, 50, 500, 100);
ctx.fillStyle = 'rgb(102,204,0)';
ctx.fillRect(50, 150, 500, 100);
ctx.fillStyle = 'rgb(0,153,255)';
ctx.fillRect(50, 250, 500, 100);
ctx.fillStyle = 'rgb(255,51,0)';
ctx.fillRect(50, 350, 500, 100);
ctx.fillStyle = 'rgb(179,30,169)';
ctx.fillRect(50, 450, 500, 100);
// 반투명한 사각형을 그린다
for (var i = 0; i < 10; i++) {
ctx.fillStyle = 'rgba(255,255,255,' + (i + 1) / 5 + ')';
for (var j = 0; j < 5; j++) {
ctx.fillRect(60 + i * 100, 60 + j * 100, 100, 80)
}
}
}
이 예제에서는 겹쳐진 원을 그리는 대신, 불투명도가 증가하는 작은 사각형을 그렸습니다.
각각의 도형마다 윤곽선이나 채움 스타일을 따로 설정할 수 있기 때문에, rgba()를 사용할 때 더 제어가 쉽습니다.
**참고 사이트 https://developer.mozilla.org/ko/docs/Web/API/Canvas_API/Tutorial
'HTML' 카테고리의 다른 글
HTML <canvas> lineCap - 선 끝점 모양 설정하기 (0) | 2022.04.25 |
---|---|
HTML <canvas> lineWidth - 선 두께 설정하기 (0) | 2022.04.25 |
HTML <canvas> fillStyle, strokeStyle - 색상 설정하기 (0) | 2022.04.25 |
HTML <canvas> Path2D 오브젝트 (Path2D objects) (0) | 2022.04.25 |
HTML <canvas> rect() 함수 - 직사각형 그리기 (0) | 2022.04.25 |