Canvas API

<canvas> 요소는 HTML 페이지에서 비트맵 영역을 정의합니다.

Canvas API는 JavaScript가 캔버스에 그림을 그릴 수 있게 합니다.

Canvas API는 모양, 선, 곡선, 사각형, 텍스트, 그림, 색상, 회전, 투명도 및 다른 픽셀 연산을 그리는 데 사용할 수 있습니다.

Canvas를 HTML에 추가

HTML 페이지의 어디서든 <canvas> 요소를 추가할 수 있는 <canvas> 태그를 사용할 수 있습니다:

인스턴스

<canvas id="myCanvas" width="300" height="150"></canvas>

자신이 직접 시도해보세요

Canvas 요소에 접근하는 방법

HTML DOM 메서드 getElementById()를 사용하여 <canvas> 요소에 접근할 수 있습니다:

const myCanvas = document.getElementById("myCanvas");

화면에 그리기 위해 2D 컨텍스트 객체를 생성해야 합니다:

const ctx = myCanvas.getContext("2d");

메모

HTML <canvas> 요소 자체에는 그리기 기능이 없습니다.

모든 그래픽을 그리기 위해 JavaScript를 사용해야 합니다.

getContext() 메서드는 그리기 도구(메서드)를 포함한 객체를 반환합니다.

화면에 그리기

2D 컨텍스트 객체를 생성한 후, 화면에 그림을 그릴 수 있습니다.

아래의 fillRect() 메서드는 왼쪽 상단 위치 20,20에 위치하는 150픽셀 너비와 100픽셀 높이의 검은색 사각형을 그립니다:

인스턴스

const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ctx.fillRect(20, 20, 150, 100);

자신이 직접 시도해보세요

색상 사용

fillStyle 속성은 그리기 객체의 채우기 색상을 설정합니다:

인스턴스

const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 150, 100);

자신이 직접 시도해보세요

또한 document.createElement() 메서드를 사용하여 새로운 <canvas> 요소를 생성하고, 이 요소를 현재 HTML 페이지에 추가할 수 있습니다:

인스턴스

const myCanvas = document.createElement("canvas");
document.body.appendChild(myCanvas);
const ctx = myCanvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 150, 100);

자신이 직접 시도해보세요

경로

화면에 그리기의 일반적인 방법은 다음과 같습니다:

  1. 경로 시작하기 - beginPath()
  2. 점으로 이동하기 - moveTo()
  3. 경로에 그리기 - lineTo()
  4. 경로 그리기 - stroke()

인스턴스

const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(20, 20);
ctx.lineTo(20, 100);
ctx.lineTo(70, 100);
ctx.stroke();

자신이 직접 시도해보세요

색상, 스타일 그리고 그림자

속성 설명
fillStyle 填充을 위한 색상, 변화gradient 또는 패턴을 설정하거나 반환합니다.
strokeStyle 선 긋기에 사용할 색상, 변화gradient 또는 패턴을 설정하거나 반환합니다.
shadowColor 그림자를 위한 색상을 설정하거나 반환합니다.
shadowBlur 그림의 그림자의 흐림 수를 설정하거나 반환합니다.
shadowOffsetX 그림자가 형상으로부터의 수평 거리를 설정하거나 반환합니다.
shadowOffsetY 그림자가 형상으로부터의 수직 거리를 설정하거나 반환합니다.
메서드 설명
createLinearGradient() 캔버스 내용에 사용되는 선형 그레이더를 생성합니다.
createPattern() 지정된 방향에서 지정된 요소를 반복합니다.
createRadialGradient() 원형/둥근 그레이더(캔버스 내용에 사용됩니다)를 생성합니다.
addColorStop() 그레이더 오브젝트 내의 색상과 정지 위치를 규정합니다.

선 스타일

속성 설명
lineCap 선의 단락 스타일을 설정하거나 반환합니다.
lineJoin 두 선이 교차할 때 생성되는角的 타입을 설정하거나 반환합니다.
lineWidth 현재 선 너비를 설정하거나 반환합니다.
miterLimit 최대 기울기 길이를 설정하거나 반환합니다.

사각형

메서드 설명
rect() 사각형을 생성합니다.
fillRect() 채운 사각형을 그립니다.
strokeRect() 채우지 않은 사각형을 그립니다.
clearRect() 지정된 사각형 내의 지정된 픽셀을 지우습니다.

경로

메서드 설명
fill() 현재 그래픽(경로)을 채웁니다.
stroke() 정의한 경로를 실제로 그립니다.
beginPath() 경로를 시작하거나 현재 경로를 초기화합니다.
moveTo() 경로를 캔버스의 지정된 점으로 이동시키고, 선을 생성하지 않습니다.
closePath() 현재 점에서 출발점으로 돌아오는 경로를 생성합니다.
lineTo() 새로운 점을 추가하고, 그 점에서 캔버스에 마지막으로 지정된 점까지의 선을 생성합니다.
clip() 원래 캔버스에서 임의의 형상과 크기의 영역을 잘라냅니다.
quadraticCurveTo() 두차 베塞尔 곡선을 생성합니다.
bezierCurveTo() 삼차 베塞尔 곡선을 생성합니다.
arc() 원형/곡선을 생성합니다(원형이나 원형의 일부를 생성하는 데 사용됩니다).
arcTo() 두 테이닝선 사이에 원형/곡선을 생성합니다.
isPointInPath() 지정된 점이 현재 경로에 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

변환

메서드 설명
scale() 현재 그래픽을 확대하거나 축소합니다.
rotate() 현재 그래픽을 회전시킵니다.
translate() 캔버스 상의 (0,0) 위치를 재지정합니다.
transform() 그리기의 현재 변환 행렬을 대체합니다.
setTransform() 현재 변환을 원소수 행렬로 초기화합니다. 그런 다음 실행합니다 transform()

텍스트

속성 설명
font 텍스트 내용의 현재 글꼴 속성을 설정하거나 반환합니다.
textAlign 텍스트 내용의 현재 정렬 방식을 설정하거나 반환합니다.
textBaseline 텍스트 그리기 시 사용하는 현재 텍스트 기본선을 설정하거나 반환합니다.
메서드 설명
fillText() 캔버스에 '구속' 텍스트를 그립니다.
strokeText() 캔버스에 텍스트(구속 없음)을 그립니다.
measureText() 지정된 텍스트 너비를 포함한 객체를 반환합니다.

이미지 그리기

메서드 설명
drawImage() 이미지, 캔버스 또는 비디오를 캔버스에 그립니다.

픽셀 연산

속성 설명
width ImageData 객체의 너비를 반환합니다.
height ImageData 객체의 높이를 반환합니다.
data 지정된 ImageData 객체의 이미지 데이터를 포함한 객체를 반환합니다.
메서드 설명
createImageData() 새 비어 있는 ImageData 객체를 생성합니다.
getImageData() 지정된 레이아웃의 픽셀 데이터를 복사한 ImageData 객체를 반환합니다.
putImageData() 이미지 데이터(지정된 ImageData 객체에서)를 캔버스에 다시 배치합니다.

合成

속성 설명
globalAlpha 그리는 현재 alpha 또는 투명도 값을 설정하거나 반환합니다.
globalCompositeOperation 새 이미지를 기존 이미지에 그리는 방법을 설정하거나 반환합니다.

기타

메서드 설명
save() 현재 컨텍스트 상태를 저장합니다.
restore() 이전에 저장된 경로 상태와 속성을 반환합니다.
createEvent()
getContext()
toDataURL()

표준 속성과 이벤트를 지원합니다

canvas 객체는 표준속성이벤트

관련 페이지

HTML 강의:HTML5 캔버스

HTML 그래픽 강의:HTML 캔버스 강의

HTML 참조 설명서:HTML <canvas> 태그