YesCoding

search:

Canvas API 1 - μ‹œμž‘ν•˜κΈ°

MDN + 기타 μžλ£Œλ“€μ„ κ³΅λΆ€ν•˜λ©° μ΄ν•΄ν•œ λ‚΄μš©μ„ μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€.

μΊ”λ²„μŠ€ <canvas> ν™˜κ²½ μ„€μ •

Javascript 와 HTML <canvas> μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 톡해 κ·Έλž˜ν”½μ„ κ·Έλ¦¬λŠ” μˆ˜λ‹¨μ„ μ œκ³΅ν•œλ‹€. μ• λ‹ˆλ©”μ΄μ…˜, κ²Œμž„ κ·Έλž˜ν”½, 데이터 μ‹œκ°ν™”, 사진 μ‘°μž‘ 및 μ‹€μ‹œκ°„ λΉ„λ””μ˜€ 처리λ₯Ό μœ„ν•΄ μ‚¬μš©λœλ‹€. 주둜 2D κ·Έλž˜ν”½μ— 쀑점을 두고 μžˆλ‹€.

ν˜„μž¬ λŒ€λΆ€λΆ„μ˜ μ£Όμš” λΈŒλΌμš°μ €μ—μ„œ μ§€μ›λœλ‹€.

<canvas> μš”μ†Œλ₯Ό μ§€μ›ν•˜μ§€ μ•ŠλŠ” λΈŒλΌμš°μ €μ—μ„œλŠ” μ–΄λ–»κ²Œ λ³΄μ΄λ‚˜μš”?

λŒ€μ²΄ μ½˜ν…μΈ λ₯Ό μ œκ³΅ν•΄μ•Ό ν•œλ‹€. <canvas> νƒœκ·Έ μ•ˆμ— λŒ€μ²΄ 컨텐츠λ₯Ό μ‚½μž…ν•œλ‹€. <canvas> νƒœκ·Έλ₯Ό μ§€μ›ν•˜ 지 μ•ŠλŠ” λΈŒλΌμš°μ €λŠ” μ»¨ν…Œμ΄λ„ˆλ₯Ό λ¬΄μ‹œν•˜κ³  μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ λŒ€μ²΄ μ½˜ν…μΈ λ₯Ό λ Œλ”λ§ν•  것이닀.

μ˜ˆμ‹œ

<canvas id="stockGraph" width="150" height="150"> current stock price: $3.15 +0.15 </canvas> <canvas id="clock" width="150" height="150"> <img src="images/clock.png" width="150" height="150" alt=""/> </canvas>

지원 μ—¬λΆ€λŠ” getContext λ©”μ„œλ“œλ₯Ό 톡해 μ•Œ 수 μžˆλ‹€.

var canvas = document.getElementById('myCanvas'); if (canvas.getContext){ var ctx = canvas.getContext('2d'); // drawing code here } else { // canvas-unsupported code here }

<canvas> μš”μ†Œμ—λŠ” width 와 height 두 μ†μ„±λ§Œ 있으며 이것도 선택사항이닀. 초기 μ„€μ • ν¬κΈ°λŠ” 300px * 150px 이고, HTML height 와 width 속성, DOM ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•˜μ—¬ λ°”κΏ€ 수 μžˆλ‹€.

성곡 μ½”λ“œ

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> Your browser does not support the HTML canvas tag.</canvas> <script> var canvas = document.getElementById("myCanvas"); canvas.width = 100; canvas.height = 300; var ctx = c.getContext("2d"); </script>

μ‹€νŒ¨ μ½”λ“œ

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> Your browser does not support the HTML canvas tag.</canvas> <script> var canvas = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); canvas.width = 100; canvas.height = 300; </script>

두 번째 λΈ”λ‘μ—μ„œλŠ” μ›ν•˜λŠ”λŒ€λ‘œ canvas element 의 κ°€λ‘œμ™€ μ„Έλ‘œκΈΈμ΄λ₯Ό λ³€κ²½ν•  수 μ—†λ‹€. javascript λŠ” μœ„μ—μ„œ μ•„λž˜λ‘œ ν•œ 쀄 ν•œ 쀄 μ½”λ“œλ₯Ό μ‹€ν–‰μ‹œν‚€λŠ”λ°, canvas 의 width, height λ₯Ό μˆ˜μ •ν•˜κΈ° 전에 이미 canvas 의 context λ₯Ό ctx 에 ν• λ‹Ήν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

<canvas> μš”μ†ŒλŠ” css 에 μ˜ν•΄μ„œλ„ μž„μ˜λ‘œ 크기λ₯Ό 지정할 수 μžˆμ§€λ§Œ λ Œλ”λ§ν•˜λŠ” λ™μ•ˆ μ΄λ―Έμ§€λŠ” λ ˆμ΄μ•„μ›ƒ 크기에 맞게 크기가 μ‘°μ •λ˜κ³ , css 크기 지정이 초기 μΊ”λ²„μŠ€ λΉ„μœ¨μ„ κ³ λ €ν•˜μ§€ μ•ŠμœΌλ©΄ μ™œκ³‘λ  수 μžˆλ‹€. λ§Œμ•½ μ™œκ³‘λœ 경우 css λ₯Ό μ‚¬μš©ν•˜μ§€ 말고 <canvas> μ†μ„±μ—μ„œ width 와 height 속성을 지정할 것을 MDN μ—μ„œ κΆŒν•˜κ³  μžˆλ‹€.

λ Œλ”λ§ μ»¨ν…μŠ€νŠΈ

<canvas> μ—˜λ¦¬λ¨ΌνŠΈλŠ” κ³ μ • 크기의 λ“œλ‘œμž‰ μ˜μ—­μ„ μƒμ„±ν•˜κ³  ν•˜λ‚˜ μ΄μƒμ˜ λ Œλ”λ§ μ»¨ν…μŠ€(rendering contexts)λ₯Ό λ…ΈμΆœν•˜μ—¬, 좜λ ₯ν•  컨텐츠λ₯Ό μƒμ„±ν•˜κ³  닀룬닀. λ Œλ”λ§ μ»¨ν…μŠ€νŠΈλŠ” 2D, 3D 도 κ°€λŠ₯ν•˜λ‹€.

getContext()

μΊ”λ²„μŠ€λŠ” μ²˜μŒμ— λΉ„μ–΄μžˆλ‹€. μΊ”λ²„μŠ€μ— 무언가λ₯Ό 그리렀면, μ–΄λ–€ μŠ€ν¬λ¦½νŠΈκ°€ ν•΄λ‹Ή μΊ”λ²„μŠ€ λ Œλ”λ§ μ»¨ν…μŠ€νŠΈμ— μ ‘κ·Όν•˜μ—¬ 무언가λ₯Ό κ·Έλ €μ•Ό ν•œλ‹€. <canvas> μš”μ†ŒλŠ” getContext() λ©”μ„œλ“œλ₯Ό μ΄μš©ν•΄μ„œ λ Œλ”λ§ μ»¨ν…μŠ€νŠΈμ™€ 그리기 ν•¨μˆ˜λ“€μ„ μ‚¬μš©ν•  수 μžˆλ‹€.

// <canvas> μš”μ†Œλ₯Ό ν‘œμ‹œν•  DOM 을 검색 var canvas = document.getElementById('exampleCanvas'); // λ Œλ”λ§ μ»¨ν…μŠ€νŠΈμ— μ ‘κ·Ό var ctx = canvas.getContext('2d');
Β© Copyright 2022, yesCoding