14. ์บ๋ฒ์ค๋ก ๋ํ,ํ ์คํธ,์ด๋ฏธ์ง ๊ทธ๋ฆฌ๊ธฐ
๊ฒฝ๋ก๊ทธ๋ฆฌ๊ธฐ์ ์์๊ณผ ๋์ ๋ํ๋ด๋ beginPath() , closePath()
๊ฒฝ๋ก๋ฅผ ๋ง๋ค๊ฒ ๋ค ์๋ฆฌ๋ beginPath()
๊ฒฝ๋ก๊ทธ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฐ๋์ ์ฌ์ฉ,
ํ์ง๋ง ์์์์น=๋์์น ๊ฐ๋ค๋ฉด, closePath()๋ ์๋ต ๊ฐ๋ฅ ,๊ทธ ์ธ์๋ ๋ถ์ฌ์ผ ํ๋ค.
15. ์บ๋ฒ์ค๋ก ๊ทธ๋ํฝ ์์ ๋ค๋ฃจ๊ธฐ
๋๋ง์ ๋๋ก์ ์ฑ ๋ง๋ค๊ธฐ
const canvas = document.querySelector("#canvas");
const toolbar = document.querySelector("#toolbar");
// ์บ๋ฒ์ค ๋๋น์ ๋์ด. toolbar.offsetHeight๋ ํด๋ฐ์ ๋์ด
canvas.width = window.innerWidth;
canvas.height = window.innerHeight - toolbar.offsetHeight;
// ์บ๋ฒ์ค ์์น๋ฅผ ๊ณ ๋ คํด ์ขํ ๊ณ์ฐํ๊ธฐ ์ํด
const canvasOffsetX = canvas.offsetLeft; // ์ผ์ชฝ์์ ์ผ๋ง๋ ๋จ์ด์ก๋
const canvasOffsetY = canvas.offsetTop; // ์์์ ์ผ๋ง๋ ๋จ์ด์ก๋
const ctx = canvas.getContext("2d");
let isDrawing = false; // ๋๋ก์ ์ํ์ธ์ง ํ์ธ
let startX; // ๊ทธ๋ฆฌ๊ธฐ ์์ํ๋ ์ขํ, x
let startY; // ๊ทธ๋ฆฌ๊ธฐ ์์ํ๋ ์ขํ, y
let lineWidth = 2; // ์ ๊ตต๊ธฐ ๊ธฐ๋ณธ ๊ฐ
// ์ ์๊ณผ ์ ๊ตต๊ธฐ๋ฅผ ์ ํํ์ ๋
toolbar.addEventListener("change", e => {
if (e.target.id === "stroke") {
ctx.strokeStyle = e.target.value;
}
if (e.target.id === "lWidth") {
lineWidth = e.target.value;
}
});
// '์ง์ฐ๊ธฐ' ๋ฒํผ ๋๋ฅด๋ฉด ์บ๋ฒ์ค ์ง์ฐ๊ธฐ
toolbar.addEventListener("click", e => {
if (e.target.id === "reset") {
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
});
canvas.addEventListener("mousedown" , e => {
isDrawing = true;
startX = e.clientX;
startY = e.clientY;
});
canvas.addEventListener("mousemove", (e) => {
if (!isDrawing) return;
ctx.lineWidth = lineWidth;
ctx.lineCap = "round";
ctx.lineTo(e.clientX, e.clientY - canvasOffsetY);
ctx.stroke();
});
canvas.addEventListener("mouseup", () => {
isDrawing = false;
ctx.beginPath();
});
GOOD ๊ธ์จ ๋ฐฐ๊ฒฝ์ด๋ฏธ์ง๋ก ์ฑ์ฐ๊ธฐ
const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.font = "bold 300px sans-serif";
ctx.fillText("GOOD", 100, 320);
ctx.globalCompositeOperation="source-in";
let img=new Image();
img.onload=()=>{
ctx.drawImage(img,0,0,canvas.width,canvas.height);
}
img.src="images/text-bg.jpg";

'๊ณต๋ถ ๊ธฐ๋ก โ๏ธ > Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| JS-Do it! JS - #12์ผ (17,18) (0) | 2023.04.03 |
|---|---|
| JS-Do it! JS - #11์ผ (16) (0) | 2023.04.01 |
| JS-Do it! JS - #9์ผ (11,12,13) (0) | 2023.03.30 |
| JS-Do it! JS - #8์ผ (09,10) (0) | 2023.03.23 |
| JS-Do it! JS - #7์ผ์ฐจ (08) (0) | 2023.03.23 |