Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

HTML5 Canvas로 베지어 곡선(Bezier Curve) 그리는 방법 완벽 가이드

HTML5의 <canvas> 태그는 스크립트를 이용해 그래픽과 애니메이션 등을 자유롭게 그릴 수 있도록 해주는 HTML5에서 새롭게 도입된 요소입니다. 캔버스 요소는 getContext라는 DOM 메서드를 제공하며, 이 메서드는 렌더링 컨텍스트와 해당 드로잉 함수들을 가져옵니다. 이 함수는 매개변수로 컨텍스트 유형을 하나 받으며, 여기서는 '2d'를 사용합니다.

bezierCurveTo() 메서드란?

HTML5 캔버스에서 베지어 곡선을 그리려면 bezierCurveTo() 메서드를 사용하면 됩니다. 이 메서드는 지정한 좌표점을 현재 경로에 추가하고, 주어진 두 개의 조절점(control point)을 이용해 이전 점과 3차 베지어 곡선(cubic Bezier curve)으로 연결합니다.

HTML5 Canvas로 베지어 곡선(Bezier Curve) 그리는 방법 완벽 가이드

매개변수 설명

bezierCurveTo() 메서드에서 x와 y 매개변수는 곡선의 끝점(endpoint) 좌표를 나타냅니다. cp1x, cp1y는 첫 번째 조절점의 좌표이고, cp2x, cp2y는 두 번째 조절점의 좌표입니다. 조절점의 위치에 따라 곡선의 휘어짐 정도와 방향이 결정되므로, 값을 다양하게 바꿔가며 연습해 보면 곡선을 자유자재로 다룰 수 있습니다.

예제 코드

아래 코드를 실행하면 HTML5 캔버스 위에 하트 모양의 베지어 곡선을 그릴 수 있습니다.

<!DOCTYPE html>
<html>
<head>
<title>HTML5 Canvas Tag</title>
</head>

<body>
<canvas id = "newCanvas" width = "500" height = "300" style = "border:1px solid #000000;"></canvas>
<script>
var c = document.getElementById('newCanvas');
var ctx = c.getContext('2d');
ctx.beginPath();
ctx.moveTo(75,40);
ctx.bezierCurveTo(75,37,70,25,50,25);
ctx.bezierCurveTo(20,25,20,62.5,20,62.5);
ctx.bezierCurveTo(20,80,40,102,75,120);
ctx.bezierCurveTo(110,102,130,80,130,62.5);
ctx.bezierCurveTo(130,62.5,130,25,100,25);
ctx.bezierCurveTo(85,25,75,37,75,40);
ctx.fill();
</script>

</body>
</html>

실행 결과

위 코드를 실행하면 여러 개의 베지어 곡선이 연결되어 부드러운 하트 모양 도형이 완성됩니다. 마지막의 fill() 메서드는 경로 내부를 기본 색상(검은색)으로 채워줍니다.

HTML5 Canvas로 베지어 곡선(Bezier Curve) 그리는 방법 완벽 가이드

핵심 정리

- getContext('2d')로 2D 렌더링 컨텍스트를 얻습니다.
- beginPath()로 새 경로를 시작합니다.
- moveTo(x, y)로 시작점을 지정합니다.
- bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)로 곡선을 연속적으로 추가합니다.
- fill() 또는 stroke()로 경로를 화면에 렌더링합니다.