Home [CSS] Canvas API
Post
Cancel

[CSS] Canvas API

Canvas API

canvas api 는 2D, 3D 를 표현할 수 있는 강력한 자바스크립트 api 이다. 간단한 2d 도형으로부터, 복잡한 3d 애니메이션까지를 자바스크립트로 구현할 수 있다. 여기서는 2d를 활용한 간단한 도형그리기만 작업해 보겠다.

canvas 시작하기(HTML)

1
<canvas id="canvas"></canvas>

Javascript

1
2
3
4
5
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

ctx.fillStyle = "green";
ctx.fillRect(10, 10, 150, 100);
  • const ctx = canvas.getContext("2d") 는 붓이라고 생각하면 된다. 그림을 그릴 수 있는 도구를 ctx 로 정의한다.
  • ctx 안에는 많은 메소드가 있다.

캔버스 크기 정하기

  • 캔버스 크기의 경우 css파일, js 파일에서 모두 정의해 주어야 한다.
1
2
3
4
5
6
// styles.css
canvas {
	width: 800px;
	height: 800px;
	border: 5px solid black;
}
1
2
3
// app.js
canvas.width = 800;
canvas.height = 800;

api 들

1
2
3
cts.rect(40, 40, 100, 100);
ctx.fillStyle = "red";
ctx.fill();
  • ctx.rect() 는 네개의 파라미터를 갖는다. 도형의 시작지점 (x,y)와 width, height(100, 100) 이다.
  • 도형 이름만 적을 경우, 선은 생성되지만 보이지는 않는다. stroke 나 fill 로 채워 주어야 한다.
  • stroke 는 선만으로 이루어진 빈 도형이고, fill 은 정해진 스타일(색깔) 로 도형을 색칠해준다.
  • ctx.fillStyle 은 붓의 색깔을 정의한다. 지정해주지 않으면 검은색이 Default 이다.

    자바스크립트는 위에서 아래로 코드를 읽기 때문에 , 순서또한 중요하다.

    1
    2
    
    ctx.fill();
    ctx.fillStyle = "red";
    

    위 코드의 경우, 기존색깔(검은색)으로 가득 채운 후 , style 을 red로 바꿔주는 코드다. 빨간색으로 칠하기를 원하는 경우 순서를 바꿔주어야 한다.

같은 경로에 존재하는 선들

1
2
3
4
5
6
7
ctx.rect(40, 40, 100, 100);
ctx.rect(50, 50, 100, 100);
ctx.rect(60, 60, 100, 100);
ctx.rect(70, 70, 100, 100);

ctx.fillstyle = "red";
ctx.fill();
  • 위 코드에서 4개의 rect 는 같은 경로에 존재하는 선들이다. 따라서 밑에 fill()함수에 의해 모두 빨간색으로 칠해지게 된다.

나누려면 어떻게 해야할까?

ctx.beginPath()함수를 사용하면, 이후에 작성하는 선들은 모두 다른경로에 있다. 따라서 다른 스타일을 적용할 수 도 있다.

  • ctx.fillstyle 은 붓의 색깔을 정한다. 따라서 경로가 바뀌더라도, 붓의 색깔은 변하지 않기 때문에, 다른색깔을 원한다면 다시 지정해 주어야 한다.

참고

mdn 공식문서

This post is licensed under CC BY 4.0 by the author.

[Algorithm] 두 큐의 합을 같게 만들기

[CSS] Canvas 선그리기 분리해보기