Canvas
Canvas
Canvas API๋ JavaScript ์ HTML
<canvas>
์๋ฆฌ๋จผํธ๋ฅผ ํตํด ๊ทธ๋ํฝ์ ๊ทธ๋ฆฌ๊ธฐ ์ํ ์๋จ์ ์ ๊ณตํ๋ค.์ ๋๋ฉ์ด์ , ๋ฐ์ดํฐ ์๊ฐํ, ๊ทธ๋ํฝ, ๊ฒ์ ๋ฑ ๋ค์ํ ์๊ฐ์ ์ธํฐ๋ ์ ์ ๊ตฌํํ๋๋ฐ ์ฌ์ฉ๋๋ ๊ฐ๋ ฅํ ๋๊ตฌ
Canvas Size
canvas์ size(width, height)๋
์ธ๋ผ์ธ ์์ฑ
์ผ๋ก ์ง์ ํ ๊ฐ๊ณผcss ์คํ์ผ
๋ก ์ง์ ํ ๊ฐ์ ์๋ก ๋ค๋ฅด๊ฒ ๋์ํ๋ค.
์ธ๋ผ์ธ ์์ฑ
์ธ๋ผ์ธ ์์ฑ์ ์ปจ๋ฒ์ค์ ํด์๋(ํฌํจ๋ ํฝ์ ์)๋ฅผ ์ ์ํ๋ค.
์บ๋ฒ์ค ๊ณ ์ ์ ๋ฌผ๋ฆฌ์ ์ธ ํฌ๊ธฐ
์ง์ ํด์ฃผ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ 300 x 150
css ์คํ์ผ๋ก ์ฌ์ด์ฆ๋ฅผ ์ง์ ํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ฉด์ ๋ํ๋ด๋ ์ฌ์ด์ฆ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค
์ฆ, ์บ๋ฒ์ค ๊ณ ์ ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ ๋ก ํ๋ฉด์ ๋ณด์ฌ์ง๋ ์ฌ์ด์ฆ๋ก ์กฐ์ (์์ถ)์ํจ๋ค.
DPR (Device Pixel Ratio)
ํ๋์ css ํฝ์ ์ ๊ทธ๋ฆด ๋ ์ฌ์ฉ๋๋ ์ฅ์น์ ํฝ์ ์๋ฅผ ์๋ฏธํ๋ค. DPR์ด ๋์์๋ก ์ ๋ช ํ ํ๋ฉด์ ๋ํ๋ธ๋ค.
dpr
๊ฐ์ด 3 ์ด์์ด๋ผ๋ฉด ์บ๋ฒ์ค ํฌ๊ธฐ๋ฅผ ๊ทธ๋งํผ ๋๋ฆฌ๋ฉด์ ์ฑ๋ฅ ์ด์๊ฐ ์๊ธธ ์ ์๊ณ , dpr์ด 2์ธ ๊ธฐ๊ธฐ์ ์ ๋ช
ํจ ์ ๋๋ง์ผ๋ก๋ ์ถฉ๋ถํ๊ธฐ ๋๋ฌธ์ ์ต๋ dpr ๊ฐ์ 2๋ก ์ ์ธํ๋ค.
์ ๊ทธ๋ฆฌ๊ธฐ
beginPath()
path๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์์ํ๋ค๊ณ ์๋ฆฌ๋ ๋ฉ์๋, ์๋ก์ด path๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์์ํ๋ฉฐ, ์ด์ path๋ ์ด๊ธฐํ์ํจ๋ค.
closePath()
path์ ์์ ์ง์ ๊ณผ ํ์ฌ ์์น๋ฅผ ์ง์ ์ผ๋ก ์ฐ๊ฒฐํ์ฌ path๋ฅผ ๋ซ๋๋ค.
fill()
ํ์ฌ ์ค์ ๋ path์ ์์ ์ฑ์ด๋ค.
fillStyle โ ์ฑ์ธ ์์์ ์ค์
ctx.fillStyle = 'red'
stroke()
ํ์ฌ ์ค์ ๋ path์ ์ค๊ณฝ์ ์ ๊ทธ๋ฆฐ๋ค.
arc()
์์ ๊ทธ๋ฆฌ๋ ๋ฉ์๋, ์ธ์์ ์ ๋ณด๋ ์๋์ ๊ฐ๋ค.
x: number
โ ์์ํ๋ x ์์นy: number
โ ์์ํ๋ y ์์นradius: number
โ ๋ฐ์ง๋ฆ์ ๊ธธ์ดstartAngle: number
โ ์์ํ๋ ๊ฐ๋endAngle: number
โ ๋๋๋ ๊ฐ๋counterclockwise: boolean | undefined
โ ์๊ณ๋ฐฉํฅ(false, default) or ๋ฐ์๊ณ๋ฐฉํฅ(true)
๊ฐ๋๋ degree
๊ฐ์ด ์๋ radian
๊ฐ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ Math.PI / 180 * [degree]
๋ก ๊ธฐ์
ํด์ผ ํ๋ค. ์ฆ, ๊ฐ๋ 1๋์ ๊ฐ์. PI(3.14)๋ฅผ 180์ผ๋ก ๋๋๊ฐ๊ณผ ๊ฐ๋ค.
180 degree = ฯ radian
1 degree = ฯ / 180 radian
x degree = x * ฯ / 180 radian
clearRect(x, y, width, height)
์ง์ ํ ์์ญ์ ์ง์ฐ๋ ๋ฉ์๋
Last updated