본문 바로가기
# Work/└ html5&css3

canvas 요소

by 호정찐 2013. 11. 12.
반응형

# canvas 요소 활용 방법

브라우저에 그림을 그리기 위해 canvas 요소를 사용하여 그림 그릴 영역을 지정하고 실제 그림을 그리는것은 자바스크립트를 사용함.


1. 캔버스 영역 지정

형식

<canvas id="아이디" width="너비" height="높이">

지원 불가능한 브라우저에서 표현할 이미지나 텍스트

</canvas>

(너비나 높이를 지정하지 않으면 자동으로 300*200 픽셀의 캔버스가 생성됨)


2. 해당 아이디에 해당하는 캔버스를 불러와 canvas 객체를 생성하고 getContext('2d') 메서드를 호출하여 그리기 컨텍스트를 생성

형식

var 변수1 = document.getElementById('아이디');

var 변수2 = 변수1.getContext(''2d');


=> 짧게. var 변수 = document.getElemntById('아이디').getContext('2d');


예시)

<!doctype html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title> test </title>

<meta name="language" content="ko" />

<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />

<script type="text/javascript">

function example(){

var canvas = document.getElementById('canvas');

var context = canvas.getContext('2d');

}

</script>

</head>

<body onload="example()">


<canvas id="canvas" width="800" height="800" style="border:1px solid red;">

이 브라우저는 html5의 canvas를 지원하지 않습니다.

</canvas>

</body>

</html>



# 사각형 그리기

형식

context.strokeRect(x,y,너비,높이); // 테두리만 있는 사각형을 그림

context.fillRect(x,y,너비,높이); // 색이 채워진 사각형을 그림

context.clearRect(x,y,너비,높이); // 특정 영역을 지움

예시)

<!DOCTYPE html>

<html>

<head>

  <meta charset="utf-8" />

  <title> 사각형 그리기 </title>

  <script type="text/javascript">

    function rect()

    {

      var canvas = document.getElementById('canvas');

      context = canvas.getContext('2d');

      

      context.strokeRect(10,10,200,200);

      context.fillRect(220,10,200,200);

      

      context.fillRect(430,10,200,200);

      context.clearRect(500,50,100,100);

    }    

  </script>

</head>


<body onload="rect();">

  <canvas id="canvas" width="700" height="400" style="border:solid 1px #000000">

    canvas 사용하기

  </canvas>

</body>

</html>


# 선 그리기

선 그리기를 위한 3가지 메서드

moveTo(x1, y1), lineTo(x2, y2), stroke()

<!DOCTYPE html>

<html>

<head>

  <meta charset="utf-8" />

  <title> 선 그리기 </title>

  <script type="text/javascript">

    function line()

    {

      var x = document.getElementById('canvas');

      canvas = x.getContext('2d');


      canvas.moveTo(10,10);

      canvas.lineTo(200,300);

      canvas.stroke();

      

      canvas.moveTo(100,10);

      canvas.lineTo(300,300);

      canvas.lineTo(300,100);

      canvas.stroke();

      

      canvas.moveTo(300,10);

      canvas.lineTo(500,300);

      canvas.lineTo(500,100);

      canvas.moveTo(550,10);

      canvas.lineTo(550,300);

      canvas.stroke();

    }    

  </script>

</head>


<body onload="line();">

  <canvas id="canvas" width="700" height="400" style="border:solid 1px #000000">

    canvas 사용하기

  </canvas>

</body>

</html>

# 다각형 그리기

선그리기 메서드 + closePath()

closePath() : 선이 마지막으로 종료된 지점과 최초의 지점을 자동으로 연결하는 역할

context.beginPath( );

context.moveTo(10, 10);

context.lineTo(100, 10);

context.lineTo(50, 100 );

context.closePath( );

context.stroke( );


# 원, 원호 그리기 (arc 메서드)



<형식>

context.arc(x, y, 반지름, 시작각도, 종료각도, 그리는 방향);


<예제1 - 원>

context.beginPath();

context.arc(150, 150, 100, 0, 360*Math.PI/180, false);

context.stroke();


<예제2 - 원호> : 시작각도와 종료 각도 지정

context.beginPath();

context.arc(150, 150, 100, 225*Math.PI/180, 45*Math.PI/180, false);

context.stroke();


# 부채꼴 그리기

<형식>

moveTo() + arc() + closePath()


<예제>

context.moveTo(150, 150);

context.arc(150, 150, 100, 0, 90*Math.PI/180, false); 

context.closePath(); context.stroke();



# 직선과 접하는 원호 그리기

<형식>

moveTo() + arcTo()


context.arcTo(보조점x, 보조점y, 종료점x, 종료점y, 반지름);



<예제>

context.moveTo(50, 50);

context.arcTo(100, 100, 200, 50, 50);

context.stroke();






반응형