html
HTML - 캔버스 시작하기
이미지를 출력하기 위해 우리는 <img>태그를 이용하여왔고, 자바 애플릿이나 플래시를 이용해 고급스런 애니메이션 효과를 얻을 수 있었습니다. 하지만 애플릿이나 플래시의 경우 플러그인 소프트웨어를 따로 설치해야 하고 특정 브라우저에서만 실행되는 등 호환성에 많은 문제점이 있었습니다. 더구나 모바일에서는 설치 자체가 되지 않아 웹사이트 개발에 어려움이 많습니다. 이러한 문제를 해결하기 위해 HTML5에서 캔버스를 도입하였습니다. 장점이라면 모바일과 모든 브라우저에서 작동한다는 점입니다. <canvas>태그로 할 수 있는 일은 선형, 원형, 사각형, 곡선, 이미지 등 지원하는 게 많습니다.
<canvas>에는 id, style, width, height 속성을 사용할 수 있고, <canvas>로 시작해서 </canvas> 로 끝나야 합니다.
<canvas
id="필수 사항"
style="CSS 선택 사항"
width="가로크기. 기본 값 300(px), 선택 사항."
height="세로크기. 기본 값 150(px), 선택 사항."
>
<p>캔버스 태그를 지원하지 않는 브라우저입니다.</p>
</canvas>
캔버스 id 속성을 제외한 나머지 속성은 선택사항이며 width는 기본 값이 300(px), height는 기본 값이 150(px)입니다. <canvas>와 </canvas>사이의 내용은 캔버스를 지원하지 않는 오래된 브라우저를 대체되는 내용이 들어 갑니다. 그리고 하나의 웹 페이지에 여러 개 만들 수 있습니다.
아래 그림과 같이 X*Y좌표 중심은 왼쪽 상단의 모서리 지점에서 시작하며 각 0*0(px) 입니다.
캔버스를 지원하지 않는 브라우저를 대체하는 내용은 아래와 같이 작성할 수 있습니다.
<!-- 텍스트 삽입 예 -->
<canvas id="mycanvas01" width="300" height="150">
<p>Canvas가 지원되지 않는 브라우저입니다.</p>
</canvas>
<!-- 이미지 삽입 예 -->
<canvas id="mycanvas02" width="300" height="150">
<img src="images/clock.png" width="150" height="150" alt=""/>
</canvas>
배경색이 다른 캔버스 3개 만들어 보겠습니다. 첫 번째 캔버스는 CSS를 사용하였고 두 번째는 캔버스 크기를 지정하지 않았습니다.
<style>
#mycanvas01 {
background-color:blue;
width: 300px;
height: 300px;
}
</style>
<!-- 1번째 캔버스 -->
<canvas id="mycanvas01">
<p>Canvas가 지원되지 않는 브라우저입니다.</p>
</canvas>
<!-- 2번째 캔버스 -->
<canvas id="mycanvas02" style="background-color:yellow;">
<p>Canvas가 지원되지 않는 브라우저입니다.</p>
</canvas>
<!-- 3번째 캔버스 -->
<canvas id="mycanvas03" style="background-color:red;" width="300" height="150">
<p>Canvas가 지원되지 않는 브라우저입니다.</p>
</canvas>

스타일 지정은 아래와 같이 <canvas>태그에 바로 접근해서 제어할 수도 있습니다.
<style>
canvas { border: 1px solid black; }
</style>
<canvas id="mycanvas"></canvas>
렌더링 컨텍스트
캔버스를 만들면 드로잉 영역에 처음에는 비어있습니다. 무언가를 표시하기 위해서, 어떤 스크립트가 컨텍스트에 접근하여 그리도록 할 필요가 있습니다. 먼저, <canvas> 태그를 찾아 DOM객체를 얻어낸 다음 getContext() 메서드를 이용해 그리기 함수를 불러와야 하는데, canvas API를 이용하여 객체를 생성하는 명령은 getContext(“2d”) 입니다. <canvas> 태그에 아래 표의 프로퍼티와 메서드를 사용할 수 있습니다.
객 체 | 설 명 |
---|---|
width | 캔버스의 가로(px) 값. 값을 설정하거나 반환 Ex.) <canvas width="300"/> |
height | 캔버스의 세로(px) 값. 값을 설정하거나 반환 Ex.) <canvas height="150"/> |
style | 캔버스의 CSS3 객체. (스타일시트 속성을 설정하거나 반환) |
getContext() | 캔버스에 그리기 컨텍스트 객체 반환 |
<style>canvas { border: 1px solid black; }</style>
<canvas id="mycanvas"></canvas>
<script type="text/javascript">
var canvas = document.getElementById('mycanvas');
canvas.width = canvas.height = 300;
if(canvas.getContext) {
var context = canvas.getContext('2d');
}
</script>
<style>
canvas {
width: 300px;
height: 300px;
border: 1px solid black;
}
</style>
<canvas id="mycanvas"></canvas>
<div id="canvas_info"></div>
<script type="text/javascript">
var canvas = document.getElementById('mycanvas');
if(canvas.getContext) {
var context = canvas.getContext('2d');
var canvas_size = 'width: ' + canvas.width + ', height: ' + canvas.height;
document.getElementById('canvas_info').innerText = canvas_size;
/*
결과:
width: 300, height: 150
*/
}
</script>
다음은 Style을 적용 예제입니다.
<style>canvas { border: 1px solid black; }</style>
<canvas id="mycanvas"></canvas>
<div id="canvas_info"></div>
<script type="text/javascript">
var canvas = document.getElementById('mycanvas');
if(canvas.getContext) {
var context = canvas.getContext('2d');
// CSS 적용 예제
canvas.style.width = "500px";
canvas.style.height = "500px";
canvas.style.background = "blue";
var canvas_size = 'width: ' + canvas.style.width + ', height: ' + canvas.style.height;
document.getElementById('canvas_info').innerText = canvas_size;
/*
결과:
width: 500px, height: 500px
*/
}
</script>
0 댓글