Today I Learned #25

YoungToMaturityยท2021๋…„ 2์›” 3์ผ
1

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
15/17
post-thumbnail

paintJS fill function

paintJS์˜ ๊ธฐ๋Šฅ ์ค‘ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์œผ๋กœ, canvas ์ „์ฒด๋ฅผ ์›ํ•˜๋Š” ์ƒ‰์ƒ์œผ๋กœ ์ฑ„์›Œ๋„ฃ๋Š” fill ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.

์„ ์–ธ ๋ฐ ์ •์˜

canvas์˜ ๊ณต์‹๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๋ฉด, CanvasRenderingContext2D๋ถ€๋ถ„์˜ fill and stroke styles ํ•ญ๋ชฉ์—์„œ fillStyle์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, strokeStyle๊ณผ ๊ฐ™์€ ์ƒ‰์ƒ์„ ํ•˜๋„๋ก ์ง€์ •ํ•ด์ฃผ์–ด์•ผํ•˜๊ณ , fillRect() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ canvas๋ฅผ ์ฑ„์šธ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋ณธ strokeStyle๊ฐ’๊ณผ canvas.width,canvas.heigth์˜ ๊ฐ’์ธ INITIAL_COLOR์™€ CANVAS_SIZE์˜ ๊ฐ’์„ ๊ฐ๊ฐ "#2c2c2c"์™€ 500์œผ๋กœ ์„ ์–ธํ•ด์ฃผ์—ˆ๋‹ค. ๋˜ํ•œ ์ดˆ๊ธฐ์˜ ctx.fillStyle = INITIAL_COLOR; ๊ฐ’์œผ๋กœ ์ •์˜ํ•ด์ฃผ์—ˆ๋‹ค.

handleColorClick

๊ธฐ์กด์˜ handleColorClickํ•จ์ˆ˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ƒ‰์ƒ div๋ฅผ ํด๋ฆญํ•˜๋Š” ๊ฒฝ์šฐ ctx.strokeStyle์„ ํ•ด๋‹น ์ƒ‰์ƒ ๊ฐ’์œผ๋กœ ํ†ต์ผ์‹œ์ผœ์ฃผ๋Š” ๋‚ด์šฉ์˜ ํ•จ์ˆ˜์˜€์œผ๋‚˜, fill ๋ชจ๋“œ์˜ ์ถ”๊ฐ€๋ฅผ ์œ„ํ•ด์„œ ctx.fillStyle์˜ ๊ฐ’ ๋˜ํ•œ ํ•ด๋‹น ์ƒ‰์ƒ ๊ฐ’์œผ๋กœ ํ†ต์ผ์‹œ์ผœ์ฃผ๋„๋ก ํ•˜์˜€๋‹ค.

handleModeClick

๊ธฐ์กด์˜ handleModeClick์€ filling์˜ ๊ฐ’์„ true ํ˜น์€ false๋กœ ๋ฐ”๊พธ์–ด์ฃผ๊ณ , ํ•ด๋‹น button์˜ innerText๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๊ฒƒ์— ๊ทธ์ณค์œผ๋‚˜, filling์ด true๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ, ctx.fillStyle์˜ ๊ฐ’์„ ํ˜„์žฌ ctx.strokeStyle์˜ ๊ฐ’๊ณผ ๊ฐ™๊ฒŒ ํ•˜๋„๋ก ํ•˜์˜€๋‹ค.

handleCanvasClick

canvas.addEventListener("click", handleCanvasClick);

๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€๋œ handleCanvasClickํ•จ์ˆ˜๋Š” canvas์— "click" ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ if(filling)์„ ํ†ตํ•ด filling์˜ true์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋งŒ์•ฝ true์ธ ๊ฒฝ์šฐ,

ctx.fillRect(0,0,CANVAS_SIZE,CANVAS_SIZE);

๋ฅผ ํ†ตํ•ด canvas๋ฅผ fillStyle์˜ ์ƒ‰์ƒ์œผ๋กœ ์น ํ•ด์ฃผ์—ˆ๋‹ค. 0,0์€ ํ•ด๋‹น canvas์—์„œ์˜ ์œ„์น˜๋ฅผ ์˜๋ฏธํ•˜๊ณ , CANVAS_SIZE,CANVAS_SIZE๋Š” ์ƒ‰์น ๋˜๋Š” Rect์˜ ๊ฐ€๋กœ์™€ ์„ธ๋กœ์˜ ๊ธธ์ด (width & height) ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, 0,0์—์„œ์˜ CANVAS_SIZE๋งŒํผ์˜ ๊ธธ์ด๋ฅผ ๊ฐ–๋Š” Rect๋Š” ์ „์ฒด canvas๋ฅผ ์˜๋ฏธํ•˜๊ฒŒ ๋œ๋‹ค.


์‹คํ–‰๊ฒฐ๊ณผ

profile
iOS Developer

0๊ฐœ์˜ ๋Œ“๊ธ€