[์ถ์ฒ-์ ํ๋ธ ๋ ธ๋ง๋ ์ฝ๋ Nomad Coders]
์ด์ ๊ฐ์์์ ํ๋ก๊ทธ๋จ์ด ์๋์ด ์๋๊ฑด 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";
ctx.lineWidth = 2.5;
let painting = false;
function stopPainting() {
painting = false;
}
function startPainting() {
painting = true;
}
function onMouseMove(event) {
const x = event.offsetX;
const y = event.offsetY;
if(!painting){
ctx.beginPath();
ctx.moveTo(x, y);
} else {
ctx.lineTo(x, y);
ctx.stroke();
}
}
function onMouseDown(event) {
painting = true;
}
if(canvas) {
canvas.addEventListener("mousemove", onMouseMove);
canvas.addEventListener("mousedown", startPainting);
canvas.addEventListener("mouseup", stopPainting);
canvas.addEventListener("mouseleave", stopPainting);
}
์ค์ pixel ์ฌ์ด์ฆ๋ฅผ ์์ค์ ์๋์ ์ํ๊ฑฐ์์...
canvas๋ฅผ ๋ฒ์ด๋๋ฉด painting์ด ์ค์ง๋จ.
ctx.strokeStyle = "#2c2c2c";
ctx.strokeStyle์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ฆด ์ ๋ค์ด ๋ชจ๋ #2c2c2c(๊ฒ์ ์)์ ๊ฐ๋๋ค๊ณ ๋งํ๊ณ ์์.
์ด context ์์ ์๋ ์ ๋ค์ ๋ชจ๋ #2c2c2c ์์ ๊ฐ๋๋ค๋ ๋ป์.
ctx.lineWidth = 2.5;
lineWidth๋ ๊ทธ ์ ์ ๋๋น๊ฐ 2.5px๋ผ๋ ๊ฒ์ด๋ค.
path๋ ์ ์ด๋ค.
path๋ฅผ ๋ง๋ค๋ฉด ๋ง์ฐ์ค์ x, y ์ขํ๋ก path๋ฅผ ์ฎ๊ธด๋ค.
path์ ์์์ ์ ๋ง์ฐ์ค๊ฐ ์๋ ๊ณณ์ด๋ค.
(๊ทธ ๋ค์ ์ค๋ช ์ ๋๊ผฌ์ค์ ๊ฐ์๋ฅผ ๋ณด๋ฉด์ ๋จธ๋ฆฌ์์ผ๋ก ์ดํดํ๋๊ฒ ๋น ๋ฅด๋ค)
์ ๊น! ) ๋ง์ผ closePath()๋ฅผ ์ฐ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ผ์ด ๋ฐ์ํ๋ค.
ctx.closePath();
function onMouseMove(event) {
const x = event.offsetX;
const y = event.offsetY;
if(!painting){
ctx.beginPath();
ctx.moveTo(x, y);
} else {
ctx.lineTo(x, y);
ctx.stroke();
ctx.closePath();
}
}
'JavaScript > Vanilla JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] Brush Size (0) | 2021.04.27 |
---|---|
[๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] Changing Color (0) | 2021.04.27 |
[๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] 2D Context (0) | 2021.04.25 |
[๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] Canvas Events (2) | 2021.04.24 |
[๋ฐ๋๋ผJS๋ก ๊ทธ๋ฆผํ ๋ง๋ค๊ธฐ] Styles part Two (0) | 2021.04.23 |
๋๊ธ