HTML DOM 캔버스 객체

<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 채우기를 위한 색상, 변화된 색상 또는 패턴을 설정하거나 반환합니다.
strokeStyle 선 긋기, 변화된 색상 또는 패턴을 위한 색상을 설정하거나 반환합니다.
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> 태그