๋ฐ์ํ ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ12 [๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] Saving the Image [์ถ์ฒ-์ ํ๋ธ ๋ ธ๋ง๋ ์ฝ๋ Nomad Coders] https://youtu.be/xOxE40I75GM ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ํด ๋ณด์! ์ฐ์ canvas์ ๋ฐฐ๊ฒฝ์์ ์ง์ ํด์ฃผ์. (๋ฐฐ๊ฒฝ์์ ์ง์ ํด์ฃผ์ง์์ผ๋ฉด ๋ฐฐ๊ฒฝ์ด ํฌ๋ช ํ๊ฒ ๋์ด) ctx.fillStyle = "white"; ctx.fillRect(0, 0, CANVAS_SIZE, CANVAS_SIZE); ๋ง์ฝ์ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ ์ถ์ง์๋ค๋ฉด ์ด๋ ๊ฒ ํ๋ฉด ๋๋ค. ์ถ๊ฐํ ๊ฒโผ function handleCM(event) { event.preventDefault(); } if(canvas) { canvas.addEventListener("mousemove", onMouseMove); canvas.addEventListener("mousedown", startPai.. 2021. 4. 28. [๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] Filling Mode [์ถ์ฒ-์ ํ๋ธ ๋ ธ๋ง๋ ์ฝ๋ Nomad Coders] https://youtu.be/2m_WnYeI1pA Fill ๋ฒํผ์ ๋๋ฅด๊ณ ์์์ ์ ํํ ํ canvas๋ฅผ ํด๋ฆญํ๋ฉด ๊ทธ ์์์ผ๋ก canvas๊ฐ ์ฑ์์ง๋ ๊ฒ์ ํ ๊ฒ์ด๋ค. fillRect() width์ height์ ์ํด์ ๊ฒฐ์ ๋ ์ฌ์ด์ฆ๋ก (x, y) ์์น์ ์์น ๋ ์ฌ๊ฐํ์ ๊ทธ๋ฆผ. ์ถ๊ฐํ ๊ฒโผ ctx.fillRect(50, 20, 100, 49); // x, y, width, height app.js const canvas = document.getElementById("jsCanvas"); const ctx = canvas.getContext("2d"); const colors = document.getElementsByClassName("jsColo.. 2021. 4. 27. [๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] Brush Size [์ถ์ฒ-์ ํ๋ธ ๋ ธ๋ง๋ ์ฝ๋ Nomad Coders] https://youtu.be/j4cAIJutjVI ๋ค์ ๋จ๊ณ๋ก๋ jsRange ์์ด๋๋ฅผ ์ถ๊ฐํ๋๊ฒ ํ์ํ๋ค. ์ถ๊ฐํ ๊ฒโผ const range = document.getElementById("jsRange"); // range ์ด๋ฒคํธ๋ input์ ๋ฐ์ํ ๊ฒ์ด๋ค. if(range) { range.addEventListener("input", handleRangeChange); } function handleRangeChange(event) { console.log(event); } app.js const canvas = document.getElementById("jsCanvas"); const ctx = canvas.getContext("2d"); .. 2021. 4. 27. [๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] Changing Color [์ถ์ฒ-์ ํ๋ธ ๋ ธ๋ง๋ ์ฝ๋ Nomad Coders] https://youtu.be/cq-l2zPUVoU Recap ํ์ ์ฐ๋ฆฌ๊ฐ ํ ์ผ์ ์์์ ๋ฐ๊พธ๋ ๊ฒ์ด๋ค. index.html app.js const colors = document.getElementsByClassName("jsColor"); console.log(Array.from(colors)); ๊น๋นกํ๊ณ closePath()๋ฅผ ์์ง์.... function handleColorClick(event) { console.log(event.target.style); } Array.from(colors).forEach(color => color.addEventListener("click", handleColorClick) ); ์ข ๋ ๋ค๋ฌ์ด๋ณด์. fun.. 2021. 4. 27. [๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] Recap! [์ถ์ฒ-์ ํ๋ธ ๋ ธ๋ง๋ ์ฝ๋ Nomad Coders] https://youtu.be/LAG1ERXR2xQ ์ด์ ๊ฐ์์์ ํ๋ก๊ทธ๋จ์ด ์๋์ด ์๋๊ฑด canvas์ ์ฌ์ด์ฆ๋ฅผ ์์ค์ ๊ทธ๋ฐ ๊ฒ ๊ฐ๋ค. canvas element๋ ๋ ๊ฐ์ ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค. CSS ์ฌ์ด์ฆ์ ์น๋ธ๋ผ์ฐ์ ์์ ์ฌ์ด์ฆ. ์ด element์ width, height๋ฅผ ์ง์ ํด์ค์ผ ํ๋ค. canvas.width = 700; canvas.height = 700; const canvas = document.getElementById("jsCanvas"); const ctx = canvas.getContext("2d"); canvas.width = 700; canvas.height = 700; ctx.strokeStyle = "#2c2c2c";.. 2021. 4. 27. [๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] 2D Context [์ถ์ฒ-์ ํ๋ธ ๋ ธ๋ง๋ ์ฝ๋ Nomad Coders] https://youtu.be/IlANstQ1h3M MDN์ ํตํด์ canvas์ ๋ํด ๋ฐฐ์๋ณด์! ํ์ํ๊ฑด ์ด ์ฌ์ดํธ์ ๋ค ์๋ค. https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D CanvasRenderingContext2D - Web APIs | MDN CanvasRenderingContext2D The CanvasRenderingContext2D interface, part of the Canvas API, provides the 2D rendering context for the drawing surface of a element. It is used for draw.. 2021. 4. 25. ์ด์ 1 2 ๋ค์ ๋ฐ์ํ