javascript/javascript 심화지식

Canvas 기초 한번사용해보자

honey.kikiki 2022. 2. 5. 00:09
728x90

HTML Canvas

오늘은 HTML 표준으로 채택되어 요즈음에는 대부분의 브라우저에서 지원하는 캔버스에 대해 살펴보도록 하겠습니다 :)
제가 Canvas 공부하게 된
이유는 바로 웹에서 자유로운 GUI(그래픽 유저 인터페이스)를 지원하는 기술이기도 하기 때문입니다.

 

canvas  기초 사용법

  •      html 문서에 canvas 엘리먼트를 선언한다.
  •      canvas 엘리먼트에 id 속성을 설정한다.
  •      canvas 태그 내부에 width, height를 설정한다.
  •      canvas 내장 '그리기 객체'를 취득한다.
  •      그리기 객체에 '채우기색, 선색, 그림자, 그라데이션' 등을 설정한다.
  •      그리기 객체를 통해 선, 사각형, 원, 텍스트 등을 그린다.
  •      자바스크립트를 통해 다양한 효과를 구현한다.

 

 

 

 

캔버스 사이즈 설정

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>canvas</title>
    <style>
      body {
        margin: 0;
      }
      .canvas {
        width: 500px;
        height: 300px;
        background-color: #eee;
      }
    </style>
  </head>
  <body>
    <h1>캔버스 사이즈 설정</h1>
    <canvas class="canvas" width="500" height="300"></canvas>
    <canvas class="canvas canvas2" width="1000" height="600"></canvas>
    <script>
      const canvas = document.querySelector(".canvas");
      const canvas2 = document.querySelector(".canvas2");
      const context = canvas.getContext("2d");
      const context2 = canvas2.getContext("2d");

      context.arc(100, 100, 50, 0, Math.PI * 2, false);
      context2.arc(100, 100, 50, 0, Math.PI * 2, false);
      context.fill();
      context2.fill();
      console.log(Math.PI);
    </script>
  </body>
</html>

 

 

결과

 

 

 

 

content 사이즈 위치 설정

 

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>context 사이즈 위치 설정</title>
    <style>
      body {
        margin: 0;
      }
      .canvas {
        background-color: #eee;
      }
    </style>
  </head>
  <body>
    <h1>context 사이즈 위치 설정</h1>
    <canvas class="canvas" width="600" height="400"></canvas>

    <script>
      const canvas = document.querySelector(".canvas");
      const context = canvas.getContext("2d");

      context.fillRect(50, 50, 100, 100);
      context.fillStyle = "red";
      context.fillRect(0, 0, 100, 100);
      context.clearRect(50, 50, 50, 50);
      context.strokeStyle = "red";
      context.strokeRect(150, 150, 50, 50);
    </script>
  </body>
</html>

 

결과

 

 

 

 

기본적으로 제공하는 canvas의 기능 정리

const canvas = document.getElementById("number"); //id로 canvas element에 접근
const context = canvas.getContext("2d"); //2d 그래픽을 그릴 수 있는 메서드를 지닌 HTML5 오브젝트
const x = 32; //원점 x 좌표
const y = 32; //원점 y 좌표

const radius = 30; //반지름
const startAngle = 0; //0도
const endAngle = Math.PI * 2; //360도

context.fillStyle = "rgb(0,0,0)"; //채우기 색 설정
context.beginPath(); //새로운 경로 생성, 경로 생성 후 그리기 명령들은 경로를 구성하고 만드는데 사용
context.arc(x, y, radius, startAngle, endAngle); //x,y위치에 원점을 두고, radius 반지름을 가지고, startAngle에서 시작하여 endAngle에서 끝나며 주어진 방향(옵션 기본값은 시계방향)으로 호 그림
context.fill(); //경로의 내부를 채워서 내부가 채워진 도형을 그린다. 열린도형은 자동으로 닫히므로 closePath()호출 필요 X

context.strokeStyle = "rgb(255,255,255)"; //윤곽선의 색 설정
context.lineWidth = 3; //윤곽선의 두께
context.beginPath(); //새로운 경로 생성
context.arc(x, y, radius, startAngle, endAngle); //원 생성
context.stroke(); //윤곽선을 이용하여 형 그림

context.fillStyle = "rgb(255,255,255)"; //채우기 색 설정
context.font = "32px sans-serif"; //문자 폰트 크기, 글씨체
context.textAlign = "center"; //문자 정렬
context.textBaseline = "middle"; //베이스 라인 정렬 설정
context.fillText("1", x, y); //주어진 x,y 위치에 주어진 "1" 텍스트를 채움, 최대폭 maxwidth 옵션값