자바스크립트 + 웹앱 API(HTML5 표준 함수)
원소스 멀티 플랫폼
플러그인 불필요
<canvas>
엘리먼트<canvas>
엘리먼트를 구성할 수 있어야 한다.
이와 같이 엘리먼트를 페이지에 추가하는 의미는 내가 웹페이지 상에 그림을 그리며 마음껏 꿈을 펼칠 수 있는 공간을 만들겠다는 것이다.
<canvas>
엘리먼트에 대한 식별자가 있어야 구분할 수 있는데, 그것이 바로 id이다.<canvas>
엘리먼트에 접근하여 context 객체를 생성하는 과정을 필수적으로 코딩하고 시작해야 한다.코드로 작성한 그래픽을 DeviceContext 메모리에 쓰고, 메모리에 쓰여진 것이 모니터로 출력이 되는 것이다.
코드는 바로 모니터로 출력할 수 없음!
캔버스 좌표의 원점은 좌상단 지점이다.
원점이 좌상단이므로 x축으로는 가장 왼쪽을 기준으로 오른쪽으로 갈수록 x축의 값은 증가하고, 왼쪽으로 갈수록 x축의 값은 감소한다
HTML5에서는 사각형을 그릴 수 있는 캔버스 API를 따로 제공하고 있는데, 다음과 같이 3개의 API를 지원한다.
각 API에 공통적으로 들어가야하는 전달인자들이 총 4개가 있다.
API 사용 형태
<canvas id="mycanvas" width="600" height="400" style="border: 3px solid"></canvas>
<script>
var ctx = document.getElementById("mycanvas");
var myContext = ctx.getContext("2d");
myContext.strokeRect(10, 10, 200, 150);
myContext.fillRect(250, 10, 200, 150);
myContext.fillRect(10, 170, 200, 150);
myContext.clearRect(270, 20, 100, 50);
</script>
beginPath() / closePath() 메소드
context.beginPath();
context.closePath();
moveTo() / lineTo() 메소드
moveTo(x1, y1);
lineTo(x2, y2);
context.moveTo(100,20);
context.lineTo(40,120);
context.lineTo(160,120);
stroke() / fill() 메소드
패스 경로를 따라 그리는 메소드가 stroke()이다.
<canvas id="mycanvas" width="600" height="400" style="border: 3px solid"></canvas>
<script>
var ctx = document.getElementById("mycanvas");
var myContext = ctx.getContext("2d");
// 선그리기
myContext.beginPath();
myContext.moveTo(100,20);
myContext.lineTo(40,120);
myContext.lineTo(160,120);
myContext.fill();
myContext.moveTo(300,20);
myContext.lineTo(200,60);
myContext.lineTo(200,120);
myContext.lineTo(400,120);
myContext.lineTo(400,60);
myContext.closePath();
myContext.stroke();
</script>