๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT

Canvas์™€ SVG: ์˜๋ฏธ, ์—ญํ• , ์‚ฌ์šฉ ์‚ฌ๋ก€, ์žฅ๋‹จ์  ๋ฐ ์ฐจ์ด์ 

by ๐Ÿ’ฒ๐ŸŽตโœ–๏ธโœ”๏ธโ˜ผ 2024. 3. 20.
728x90

Canvas์™€ SVG: ์˜๋ฏธ, ์—ญํ• , ์‚ฌ์šฉ ์‚ฌ๋ก€, ์žฅ๋‹จ์  ๋ฐ ์ฐจ์ด์ 

๊ฐœ์š”

Canvas์™€ SVG๋Š” ์›น ๊ฐœ๋ฐœ์—์„œ ๊ทธ๋ž˜ํ”ฝ์„ ์ƒ์„ฑํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” Canvas์™€ SVG์˜ ๊ฐœ๋…, ์—ญํ• , ์‚ฌ์šฉ ์‚ฌ๋ก€, ์žฅ๋‹จ์ , ๊ทธ๋ฆฌ๊ณ  ์ฐจ์ด์ ์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Canvas๋ž€?

Canvas๋Š” HTML5์˜ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋กœ, JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ž˜ํ”ฝ์„ ๊ทธ๋ฆฌ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ํ”ฝ์…€ ๋‹จ์œ„๋กœ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฏธ์ง€, ์• ๋‹ˆ๋ฉ”์ด์…˜, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

SVG๋ž€?

SVG(Scalable Vector Graphics)๋Š” XML ๊ธฐ๋ฐ˜์˜ ๋ฒกํ„ฐ ์ด๋ฏธ์ง€ ํ‘œํ˜„ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ์–ด ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ, ์ด๋ฏธ์ง€๋ฅผ ํ™•๋Œ€ํ•˜๊ฑฐ๋‚˜ ์ถ•์†Œํ•ด๋„ ํ’ˆ์งˆ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ์•„์ด์ฝ˜, ๋กœ๊ณ , ์ฐจํŠธ, ์ง€๋„ ๋“ฑ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Canvas์™€ SVG์˜ ์—ญํ• 

  • Canvas: ๋™์  ๊ทธ๋ž˜ํ”ฝ ์ƒ์„ฑ ๋ฐ ์ œ์–ด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ๊ฐœ๋ฐœ, ์• ๋‹ˆ๋ฉ”์ด์…˜, ์ด๋ฏธ์ง€ ํŽธ์ง‘ ๋“ฑ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • SVG: ํ™•๋Œ€/์ถ•์†Œ์— ์œ ๋ฆฌํ•˜๋ฉฐ, ๊ณ ํ’ˆ์งˆ์˜ ๊ทธ๋ž˜ํ”ฝ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์•„์ด์ฝ˜, ๋กœ๊ณ , ์ฐจํŠธ, ์ง€๋„ ๋“ฑ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Canvas์™€ SVG ์‚ฌ์šฉ ์‚ฌ๋ก€

  1. Canvas: ๊ฒŒ์ž„ ๊ฐœ๋ฐœ

    <canvas id="gameCanvas" width="800" height="600"></canvas>
    <script>
     var canvas = document.getElementById("gameCanvas");
     var context = canvas.getContext("2d");
     // ๊ฒŒ์ž„ ๊ทธ๋ž˜ํ”ฝ ๊ทธ๋ฆฌ๊ธฐ
    </script>
  2. SVG: ์•„์ด์ฝ˜

    <svg width="100" height="100">
    <circle cx="50" cy="50" r="40" fill="red" />
    </svg>
  3. Canvas: ์• ๋‹ˆ๋ฉ”์ด์…˜

    <canvas id="animationCanvas" width="400" height="200"></canvas>
    <script>
     var canvas = document.getElementById("animationCanvas");
     var context = canvas.getContext("2d");
     // ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ”„๋ ˆ์ž„๋ณ„๋กœ ๊ทธ๋ž˜ํ”ฝ ์—…๋ฐ์ดํŠธ
    </script>
  4. SVG: ์ฐจํŠธ

    <svg width="400" height="200">
    <rect x="50" y="20" width="100" height="150" fill="blue" />
    </svg>
  5. Canvas: ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”

    <canvas id="chartCanvas" width="400" height="200"></canvas>
    <script>
     var canvas = document.getElementById("chartCanvas");
     var context = canvas.getContext("2d");
     // ์ฐจํŠธ ๊ทธ๋ฆฌ๊ธฐ
    </script>

Canvas์™€ SVG์˜ ์žฅ๋‹จ์ 

Canvas์˜ ์žฅ๋‹จ์ 

  • ์žฅ์ :
    • ๋™์  ๊ทธ๋ž˜ํ”ฝ ์ƒ์„ฑ์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.
    • ๋ณต์žกํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฐ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ :
    • ํ™•๋Œ€/์ถ•์†Œ ์‹œ ํ’ˆ์งˆ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ทธ๋ž˜ํ”ฝ ์ˆ˜์ •์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SVG์˜ ์žฅ๋‹จ์ 

  • ์žฅ์ :
    • ํ™•๋Œ€/์ถ•์†Œ์— ์šฉ์ดํ•˜๋ฉฐ, ํ’ˆ์งˆ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
    • ํ…์ŠคํŠธ ๋ฐ ์ด๋ฏธ์ง€์™€์˜ ํ†ตํ•ฉ์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ :
    • ๋ณต์žกํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์—๋Š” ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Canvas์™€ SVG์˜ ์ฐจ์ด์ 

  • Canvas: ํ”ฝ์…€ ๋‹จ์œ„๋กœ ๊ทธ๋ž˜ํ”ฝ์„ ๊ทธ๋ฆฌ๊ณ  ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ์Šคํ† ์–ด ํ˜•ํƒœ๋กœ ๊ทธ๋ž˜ํ”ฝ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • SVG: ๋ฒกํ„ฐ ์ด๋ฏธ์ง€๋กœ ์ •์˜๋˜์–ด ์žˆ์–ด, ํ™•๋Œ€/์ถ•์†Œ ์‹œ ํ’ˆ์งˆ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. XML ํ˜•์‹์œผ๋กœ ๊ทธ๋ž˜ํ”ฝ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ด€ ๊ธฐ์ˆ 

Canvas์™€ SVG๋Š” ์›น ๊ทธ๋ž˜ํ”ฝ์„ ๋‹ค๋ฃจ๋Š” ์ฃผ์š” ๊ธฐ์ˆ ์ด๋ฉฐ, HTML5 Canvas API, CSS, JavaScript ๋“ฑ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ WebGL์€ 3D ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ์ˆ ๋กœ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ƒ์œผ๋กœ Canvas์™€ SVG์˜ ๊ฐœ๋…, ์—ญํ• , ์‚ฌ์šฉ ์‚ฌ๋ก€, ์žฅ๋‹จ์  ๋ฐ ์ฐจ์ด์ ์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค๋ช…์„ ๋งˆ์ณค์Šต๋‹ˆ๋‹ค. ์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์—์„œ ์ ์ ˆํ•œ ๊ธฐ์ˆ  ์„ ํƒ์„ ์œ„ํ•ด ์ด ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋Œ“๊ธ€