본문 바로가기

HTML5

HTML5 눈에띄는 기능 - Canvas

new document 먼저 html에 그림을 그리기위해 도화지를 준비 한다.

<canvas id="canvas" width="500" height="200"></canvas> 
 
실제 도형을 그리는 작업은 자바스크립트를 이용함.

기본적인 스크립트 분석

<script type="application/javascript">
function draw_m(){
var m_canvas = document.getElementById("canvas");
var m_ctx = m_canvas.getContext("2d");  
  1  

m_ctx.fillStyle = "rgb(250,0,0)";   2  
m_ctx.fillRect(10, 10, 100), 100);   3  
</script> 
<body>
<canvas id="canvas" width="500" height="300"></canvas>
</body>  


  1  사각형을 그리거나 원을 그리는 등의 메서드와 프로퍼티들은 모두 드로잉 컨텍스트 안에 있습니다. 따라서 드로잉 컨텍스트의 인스턴스를 반드시 생성해야 합니다. 객체의 컨텍스트를 또다른 변수에 저장합니다. 

  2  도형의 CSS스타일을 지정합니다. rgb(R,G,B) 값을 사용할 수도 있고, rgba(R,G,B,알파값)를 사용할 수도 있습니다.

  3  사각형을 그리기 위해 fillRect 메서드를 사용합니다. fillRect 메서드의 기본 형식은 fillRect(시작 x좌표, 시작y좌표, 너비, 높이) 입니다.


사각형 그리기

fillRect(x,y,width,height) 색이 칠해진 사각형을 그립니다. 
strokeRect(x,y,width,height)  테두리만 있는 사각형을 그립니다. 
clearRect(x,y,width,height)  특정 영역을 지우고 완전히 투명하게 만듭니다. 

<script type="application/javascript">
function draw_m(){
var m_canvas = document.getElementById("canvas");
var ctx = m_canvas.getContext("2d");  

ctx.fillStyle = rgb(200,0,0); 
ctx.fillRect(10, 10, 100), 100); 
ctx.fillStyle = "rgba(0,0,200, 0.5)"; 
ctx.fillRect(50,50,100,100); 
  1  
ctx.clearRect(60,60,40,40); 
  2  
ctx.strokeStyle="rgb(200,0,250)"; 
  3  
ctx.strokeRect(200,50,70,150);
  4  
</script>
  1  (50,50)을 시작점으로 너비와 높이가 100픽셀인 채우기 사각형을 그립니다. 먼저 그린 빨간색 사각형과 겹쳐지는 투명도가 0.5이기 때문에 아래 있는 도형(빨간색 사각형)이 약간 비치게 됩니다.

  2  (60,60)을 시작점으로 너비와 높이 40픽셀만큼씩의 영역을 지웁니다. 화면에는 문서의 배경색으로 나타납니다.

  3  테두리 색을 지정합니다. 지정하지 않을경우 검정색으로 표시됩니다.

  4  (200,50)을 시작점으로 너비가 70픽셀이고 높이가 150픽셀인 테두리 사각형을 그립니다. 


경로 그리기

beginPath() 경로시작 
closePath() 경로종료 
stroke()  경로 테두리 그리기 
fill() 도형 채우기 

 

 

moveTo(x,y) x,y로 위치로 시작점을 옮김 
lineTo(x,y) x,y 좌표 지점까지 직선을 그림 
arc(x, y, r, starAngle, endAngle, anticlockwise)  원, 호 그리기 
 
arc 메서드는 (x,y)위치에서 시작해 반시계방향으로 반지름 (r)만큼의 원을 그립니다. 'starAngle'과 'endAngle' 매개변수는 호의 시작점과 끝점을 각도로 표시한 것이고, anticlockwise 매개변수는 호를 그릴 때 반시계방향으로 그릴지 여부를 참(true)과 거짓(false)으로 지정합니다.

arc  메서드의 각도는 도로 표기하지 않고 라디안(radian)값으로 표기합니다. 1라디안은 180/π 이고,
60도는 (π/180)*60라디안이 됩니다. 따라ㅅㅓ 360도는 2π라디안이 되고요 이러한 계산방법을 자바스크립트로 표현하면 아래와 같습니다.

var radians = (Math.PI/180)*degrees
예제

function draw_m(){

var canvas = document.getElementById("m");
var ctx = canvas.getContext("2d");

ctx.beginPath();
ctx.arc(70, 70, 20, 0,(Math.PI/180)*60,true);
ctx.stroke();

ctx.beginPath();
ctx.arc(130, 110, 50, 0, Math.PI*2,true);
ctx.fillSyle="rgb(0,200,200)";
ctx.stroke();
ctx.beginPath();
ctx.arc(190, 70, 20, (Math.PI/180)*110,(Math.PI/180)*170,true);
ctx.stroke();

ctx.beginPath();
ctx.arc(300, 150, 30,0,(Math.PI/180)*200,false);
ctx.fillStyle="rgb(0,200,0)";
ctx.fill();
 

}

'HTML5' 카테고리의 다른 글

DevOn 2011 배포된 PDF  (0) 2011.11.29
차세대 웹 서비스를 위한 실전 HTML5 가이드  (0) 2011.04.06
html5 Doctype 선언 및 인코딩  (0) 2011.04.06