#2 자바스크립트
브러시 사이즈
- range <input>에 "input" 이벤트
- event.target.value로 input의 range 값 구함.
- ctx.lineWidth 값을 range 값으로 override.
filling mode
- mode 버튼
- fill : 전체 캔버스에 색상 채움.
- paint : 캔버스에 선 그림.
- "fill"이라 써있는 버튼 클릭하면 "paint"로 바뀌게 함.
- filling 변수 만들어, false/true 껐다켰다 함.
- fill 실행
- fillRect(x, y, w, h) : width와 height로 결정된 사이즈로 (x, y) 위치에 색칠된 사각형 그림.
- fillStyle : line을 위한 strokeStyle로는 사각형의 색깔을 바꾸지 못함.
이미지 저장
- 캔버스 > 우클릭 : "이미지를 다른 이름으로 저장"
- 캔버스는 픽셀을 다루기 때문에 기본적으로 이미지를 만듦.
- 만들어진 이미지를 다운로드하는 기능이 기본 내장되어있음.
- 우클릭으로 이미지 저장하지 못하게 하기
- "contextmenu" 이벤트를 preventDefault함.
function handleCM(event) { event.preventDefault(); }
- "contextmenu" 이벤트를 preventDefault함.
- 그런데 캔버스의 배경색을 설정하지 않아서 배경은 투명하게 비어있는 버그 있음.
- 캔버스에 디폴트로 하얀 사각형을 채움.
-
ctx.fillStyle = "white"; ctx.fillRect(0, 0, CANVAS_SIZE, CANVAS_SIZE);
- "white" 색상명은 문자열이므로 따옴표해야 함. 컬러코드일 때도 마찬가지.
- save 버튼 : 클릭하면 캔버스 이미지 저장하기
- toDataURL("파일형식") : 캔버스의 데이터를 이미지처럼 얻기. 파일형식은 기본값이 png.
- download : <a>의 속성 중 하나. 이 속성에 name을 부여하면, 브라우저가 href에 부여된 링크를 다운로드함.
-
function handleSaveClick() { const image = canvas.toDataURL("image/jpeg"); const link = document.createElement("a"); link.href = image; link.download = "PaintJS[EXPORT]"; link.click(); }
- toDataURL로 얻은 이미지 링크를 가진 <a> 태그를 만듦.
- 가짜로 click() 시켜서 download 속성의 값을 파일명으로 갖는 이미지가 다운로드되게 함.
'TIL' 카테고리의 다른 글
[TIL-113] 위코드 12일차: enemyRain 게임 - 배경 이미지와 캐릭터 이동 (0) | 2022.02.04 |
---|---|
[TIL-112] Javascript 클래스 (0) | 2022.02.03 |
[TIL-110] 노마드코더 그림판(JS) 클론코딩 #1.0~#2.3 (0) | 2022.02.01 |
[TIL-109] 위코드 8일차: JS replit 27~33 "ES6 추가 기능", "DOM" (0) | 2022.01.31 |
[TIL-108] 위코드 7일차: JS replit 23~26 (0) | 2022.01.30 |