카테고리 없음

HTML - Canvas

elenalee 2023. 6. 8. 23:47

캔버스 

자바스크립트 코드를 이용해서 웹 브라우저에 그림을 그리는 기능

- 별도의 프로그램 설치없이 사용

- 단순히 그림을 그리는 기능 (합성, 변환, 애니메이션 효과표현 가능)

 

1단계 : canvas요소를 사용해서 그림이 그려지는 영역 지정 (그림을 담는 컨테이너)

2단계 : 자바스크립트 코드를 사용해소 해당 영역에 그림을 그림 

 

(1) 캔버스의 좌표 시스템  (픽셀의 조합으로 그래픽 표현, bitmap방식 )

캔버스 요소  ( 캔버스 영역을 지정하는 요소)

- 웹페이지에서 그림이 그려지는 투명한 사각영역 

- id속성 필수, 기본크기(default) 폭 300px, 높이 500px

 

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

이 요소를 지원하지 않는 브라우저에 출력할 내용

</canvas>

 

CANVAS의 좌표개념과 요소의 실행모습

 

(2) 캔버스 객체와 캔버스 컨텍스트 객체생성 

-캔버스 객체는 담아두는 기능을 하며, 실제 그림을 그리는 기능은 캔버스 콘텍스트 객체가 시행

 

 

 

(3) 선과 도형그리기

 

 

(4) 그림을 그리는 방식

 

▷호출 즉시 그림을 그리는 방식

관련함수를 호출하면 어떤 단계를 거치지 않고 바로 캔버스에 그림을 그리는 방식

strokeRect(), fillRect(), clearRect(), strokeText(), drawImage()

 

▷패스(path)를 기반으로 그리는 방식

- 패스 :  각 도형을 이루는 선("서브패스")들의 집합

- 1) 패스초기화 → beginPath()

- 2)다양한 메서드를 사용하여 패스를 지정하고 선/도형을 그림 

- 3)지정한 패스를 닫음 closePath()

- 4) 선/도형출력 stroke() 혹은 fill()메서드

 

패스기반의 메서드
Path를 이용한 선그리기
원과 원호 부채꼴 그리기
선에 스타일 주기, 점선의 스타일

 

 

(5) 스타일 지정하기 

 

 

(6) 그라데이션 스타일 

 

(7) 패턴 스타일 

 

(8) 도형 합성 

 

(9)텍스트와 그리기

 

▷ 관련 메서드 

strokeText(텍스트, x,y[,maxWidth])

- 지정된 위치(x,y)를 기준으로 텍스트만 있는 테두리를 그림

- maxWidth → 텍스트가 주어진 크기에 맞게 조정되어 그려짐 

 

fillText(텍스트, x,y[,maxWidth])

- 지정된 위치(x,y)를 기준으로 색이 채워진 텍스트를 그림

 

변수 measureText(텍스트), 변수.width

현재 글꼴에서 주어진 텍스트의 폭을 반환

 

 

▷ 관련 속성

font

글자의 스타일, 크기, 글자체 지정 (default: 10px, sans-serif)

textAlign

수평방향의 정렬방식지정 (값 → left, right, center, start, end)

textBaseline

수직방향의 기준선 지정(값 -> top, hanging, middle, alphabet, ideographic, bottom)

 

 

 

(10) 그리기

 

▷ 관련 메서드 

drawImage()메서드 

- drawImage(이미지 변수, dx, dy)

원본 이미지를 지정된 위치 (dx, dy)에서 원래 크기대로 삽입 

- drawImage(이미지 변수, dx, dy, dw, dh)

원본 이미지를 지정된 위치 (dx, dy)에서 dwxdh 크기대로 삽입 

- drawImage(이미지 변수, sx, sy, sw, sh, dx, dy, dw, dh )

원본 이미지를 (sx, sy)위치에서 swxsh크기만큼 잘라내어 캔버스의 지정된 위치 (dx, dy)에서 dwxdh 크기대로 삽입 

 

(11) 도형변환

 

캔버스의 좌표계의 변환(이동, 회전, 확대/축소)를 통해 캔버스에 그려지는 도형에 대한 변환 효과를 부여

▷ 메서드

이동변환 translate(x,y)

크기변환 scale(x,y)

회전변환 rotate(각도)

사용자정의변환 transform(), setTransform()

** css의 translate, scale, rotate, matrix와 유사(skwe유사기능은 없음)

 

 

 

(12) 사용자 정의변환