U E D R , A S I H C RSS

html5/canvas


1. บ”๋ฒ„Šค?

  • ๊ทธ๋ž˜”ฝ„ žœ ๋กญ๊ฒŒ ๊ทธ๋ฆด ˆ˜ žˆ๋Š” ˜—ญ.
  • ๊ณ  •๋œ ๋„“ด™€ ๋†’ด.
  • IE๋ฅผ  œ™ธ•œ ๋ชจ๋“  ฃผš” ๋ธŒ๋ผšฐ €(?)—„œ ‚ฌšฉ•  ˆ˜ žˆ๋Š” ๊ธฐ๋Šฅ. IE—„œ ‚ฌšฉ•˜๊ณ  ‹ถœผ๋ฉด Explorer Canvas, uuCanfas.js ๋“˜ ๋ผด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ‚ฌšฉ•˜—ฌ  œ•œ  ๊ธฐ๋Šฅœผ๋กœ ‚ฌšฉ•  ˆ˜ žˆ๋‹ค.

2. ‚ฌšฉ ๋ฐฉ๋ฒ•

<canvas></canvas>
  • canvasœ„— ๊ทธ๋ฆผ„ ๊ทธ๋ฆฌ๋ ค๋ฉด Javascript๋กœ ๊ทธ๋ฆฌ๊ธฐ ปจ…ŠคŠธ๋ฅผ ƒ„•ด•ผ•œ๋‹ค.

    • var canvas = document.getElementById(๊ฐ€ ธ˜ค๊ณ  ‹ถ€ canvas˜ id);
      var context = canvax.getContext("2d");
      
    • ๊ทธ๋ฆฌ๊ธฐ ปจ…ŠคŠธ๋Š” ๊ทธ๋ž˜”ฝ„ ๊ทธ๋ฆฌ๋Š” ๋ฐ ๋„›€ด ๋˜๋Š” ๋ฉ”„œ๋“œ๋ฅผ  œ๊ณต•œ๋‹ค.

2.1. ‚ฌ๊ฐ˜• ๊ทธ๋ฆฌ๊ธฐ

  • œค๊ณฝด žˆ๋Š” ‚ฌ๊ฐ˜•„ ๊ทธ๋ฆด ˆ˜ žˆ๋‹ค.
  • ƒ‰œผ๋กœ „šด ‚ฌ๊ฐ˜•„ ๊ทธ๋ฆด ˆ˜ žˆ๋‹ค.
  • ‚ฌ๊ฐ˜•„ ง€šธ ˆ˜ žˆ๋‹ค.

2.2. ด๋ฏธง€ ‚ฝž…

  • img š”†Œ, video š”†Œ, canvas š”†Œ˜ DOM ๊ฐฒด๋ฅผ ๊ทธ๋ฆด ˆ˜ žˆ๋‹ค.
    • img š”†Œ˜ DOM ๊ฐฒด๋Š” Image ƒ„ž๋ฅผ ‚ฌšฉ•˜—ฌ ๋งŒ๋“ค ˆ˜๋„ žˆ๋‹ค.
    • video š”†Œ˜ DOM ๊ฐฒด๋ฅผ ‚ฌšฉ•  ๊ฒฝšฐ drawImage()๋ฅผ ˜ธถœ•œ ‹œ —„œ žฌƒ๋˜๋Š” ”„๋ ˆž„„ ๊ทธ๋ คค€๋‹ค.
  • ด๋ฏธง€๋ฅผ ›๋ž˜ ฌ๊ธฐ๋กœ ‚ฝž…•  ˆ˜ žˆ๋‹ค.
  • ด๋ฏธง€˜ ‚ฌดˆ๋ฅผ ง€ ••˜—ฌ ‚ฝž…•  ˆ˜ žˆ๋‹ค.
  • ›๋ž˜ ด๋ฏธง€—„œ ผ๋ถ€๋ถ„„ ž˜๋ผ๋‚ด–ด ‚ฝž…•  ˆ˜ žˆ๋‹ค.
  • (๊ทธ๋ฆผ ‚ฝž…)

2.3. ๋ณตžก•œ „ ด๋‚˜ ๋„˜• ๊ทธ๋ฆฌ๊ธฐ

  • ŒจŠค
    • บ”๋ฒ„Šค˜ API๋ฅผ ดšฉ•˜—ฌ ๊ทธ๋ ค„ „ ๋“ค˜ ง‘•ฉ.
    • „œ๋ธŒ ŒจŠค
      • ŒจŠค๋ฅผ ๊ตฌ„•˜๋Š” •˜๋‚˜•˜๋‚˜˜ „ .
      • (๊ทธ๋ฆผ ‚ฝž…)
    • ๊ทธ๋ฆฌ๊ธฐ ปจ…ŠคŠธ๊ฐ€  œ๊ณต•˜๋Š” API๋ฅผ ดšฉ•˜—ฌ ง„ , ๋ฒ ง€— ๊ณก„ , ›˜ธ ๋“ ๋‹ค–‘•œ ŒจŠค๋ฅผ ๊ทธ๋ฆด ˆ˜ žˆ๋‹ค.
  • ŒจŠค๋ฅผ ๊ทธ๋ ค ๊ทธ๋ž˜”ฝ„ ‘œ‹œ•˜๋Š” ˆœ„œ
    1. beginPath()๋กœ ๊ทธ๋ฆฌ๊ธฐ ‹œž‘.
      • ๊ทธ ด „— ๊ทธ๋ ธ๋˜ ŒจŠค๋Š” ๋ชจ๋‘ ๋ฆฌ…‹๋œ๋‹ค.
    2. บ”๋ฒ„Šค˜ API๋ฅผ ดšฉ•˜—ฌ ŒจŠค ๊ทธ๋ฆฌ๊ธฐ.
      • —ฌ๊ธฐ„œ ๊ทธ๋ฆฐ ŒจŠค๋Š” •„ง ๊ทธ๋ž˜”ฝœผ๋กœ ‘œ‹œ๋˜ง€ •ŠŒ.
    3. ๊ทธ๋ž˜”ฝ„ ™”๋ฉด— ‘œ‹œ.
      • stroke()
        • ŒจŠค๋ฅผ „ œผ๋กœ ‘œ˜„•œ๋‹ค.
        • „ ˜ Šคƒ€ผ€ strokeStyle †„œผ๋กœ ง€ ••œ๋‹ค.
      • fill()
        • ŒจŠค ๋‚ด๋ถ€๋ฅผ „šด๋‹ค.
        • ˜ธถœ‹œ ŒจŠค๊ฐ€ ๋‹ซžˆง€ •Š•˜๋”๋ผ๋„ ž๋™œผ๋กœ ๋‹ซžŒ ƒƒœ๋กœ ๋งŒ๋“ ๋‹ค.
        • ๋‚ด๋ถ€ Šคƒ€ผ€ fillStyle †„œผ๋กœ ง€ ••œ๋‹ค.
      • clip()
        • ŒจŠค˜ ๋‚ด๋ถ€๋ฅผ ด๋ฆฌ•‘ ˜—ญœผ๋กœ ง€ ••œ๋‹ค.
        • ด๋ฆฌ•‘ ˜—ญด žˆ๋Š” ƒƒœ—„œ บ”๋ฒ„Šค— ๊ทธ๋ คง€๋Š” ๊ทธ๋ž˜”ฝ€ ด๋ฆฌ•‘ ˜—ญ •ˆชฝ—๋งŒ ‘œ‹œ๋œ๋‹ค.
        • beginPath()๋ฅผ ˜ธถœ•˜—ฌ ด๋ฆฌ•‘ ˜—ญ„ •ด œ•  ˆ˜ žˆ๋‹ค.
        • (๊ทธ๋ฆผ ‚ฝž…)

2.4. Šคƒ€ผ ง€ •

  • strokeStyle
    • stroke(), strokeRect() ๋“„ ดšฉ•˜—ฌ ๊ทธ๋ฆฐ „ ˜ ƒ‰ด๋‚˜ Šคƒ€ผ„ ง€ ••œ๋‹ค.
  • fillStyle
    • fill(), fillRect() ๋“„ ดšฉ•˜—ฌ ๊ทธ๋ฆฐ „ ˜ ƒ‰ด๋‚˜ Šคƒ€ผ„ ง€ ••œ๋‹ค.
  • †„— ง€ ••  ˆ˜ žˆ๋Š” ๊ฐ’
    • CSS Color
      • CSS3˜ ƒ‰ ง€ • ๋ฐฉ๋ฒ•„  „๋ถ€ ดšฉ•  ˆ˜ žˆ๋‹ค.
      • •„๋ฌด ๊ฒƒ๋„ ง€ ••˜ง€ •Šœผ๋ฉด #000000(๊ฒ€€ƒ‰)ด ๊ธฐ๋ณธ ๊ฐ’ด ๋œ๋‹ค.
    • CanvasGradient
      • „ ˜• ๊ทธ๋ผ๋ฐด…˜, ›˜• ๊ทธ๋ผ๋ฐด…˜„  šฉ•  ˆ˜ žˆ๋‹ค.
    • CanvasPattern
      • img š”†Œ๋‚˜ video š”†Œ ˜น€ ๋‹ค๋ฅธ บ”๋ฒ„Šค๋ฅผ ‚ฌšฉ•˜—ฌ Œจ„„ ง€ ••  ˆ˜ žˆ๋‹ค.
  • globalAlpha
    • globalAlpha †„„ ดšฉ•˜—ฌ ˆฌ๋ช…๋„๋ฅผ ง€ ••  ˆ˜ žˆ๋‹ค.
    • †„ ๊ฐ’€ 0.0(™„ „ ˆฌ๋ช…)๋ถ€„ฐ 1.0(๋ถˆˆฌ๋ช…)๊นŒง€˜ ๊ฐ’„ ง€ ••  ˆ˜ žˆ๋‹ค.

2.4.1. „  Šคƒ€ผ ง€ •

  • „  Šคƒ€ผ
    • „ ˜ ๊ตต๊ธฐ
    • „ ˜ ๋ 
      • (๊ทธ๋ฆผ ‚ฝž…)
    • „ ๋“คด ๊ตฐจ–ˆ„๋•Œ ƒ๊ธฐ๋Š” ๊ฐ
      • (๊ทธ๋ฆผ ‚ฝž…)

2.5. ๊ทธ๋ฆผž šจ๊ณผ

  • ๊ทธ๋ฆฌ๊ธฐ ปจ…ŠคŠธ๊ฐ€ ๊ฐ€„ †„„ ง€ ••˜—ฌ „ ด๋‚˜ ๋„˜•— ๊ฐ„๋‹จ•˜๊ฒŒ ๊ทธ๋ฆผž šจ๊ณผ๋ฅผ ถ”๊ฐ€•  ˆ˜ žˆ๋‹ค.

2.6. ˜—ญด ๊ฒนน  ๋•Œ˜ ๋™ž‘

  • globalCompositeOperation
    • ƒˆ๋กœšด ๋„˜•ด ๊ธฐกด ด๋ฏธง€™€ ๊ฒนน ๋•Œ˜ –‰๋™„ ง€ ••˜๋Š” †„ด๋‹ค.
    • ๊ธฐ๋ณธ ๊ฐ’€ source-over ด๋‹ค.
    • (๊ทธ๋ฆผ ‚ฝž…)

2.7. …ŠคŠธ ‚ฝž…

  • ๊ธ€๊ผด, ฌ๊ธฐ, ๊ฐ€๋กœ ๋ฐฉ–ฅ  •๋ ฌ œ„น˜, „ธ๋กœ ๋ฐฉ–ฅ  •๋ ฌœ„น˜๋ฅผ ง€ ••˜—ฌ …ŠคŠธ๋ฅผ ‚ฝž…•  ˆ˜ žˆ๋‹ค.
  • (๋งฌ)

2.8. ๊ทธ๋ž˜”ฝ ๋ณ€˜•

  • ๊ทธ๋ฆฌ๊ธฐ ปจ…ŠคŠธ˜ ๋ฉ”„œ๋“œ๋ฅผ ดšฉ•˜—ฌ ขŒ‘œ๋ฅผ
    • ™•๋Œ€, ถ•†Œ
    • šŒ „
    • ด๋™
      •  ˆ˜ žˆ๋‹ค.
    • ขŒ‘œ ๋ณ€™˜ ๋งคŠธ๋ฆญŠค

2.9. ๊ทธ๋ฆฌ๊ธฐ ปจ…ŠคŠธ ƒƒœ  €žฅ๊ณผ ๋ณต›

  • save()
    • ๊ทธ๋ฆฌ๊ธฐ ปจ…ŠคŠธ˜ ƒƒœ๋ฅผ  €žฅ•œ๋‹ค.
    • ˜„žฌ บ”๋ฒ„Šค— ๊ทธ๋ ค„ ๊ทธ๋ž˜”ฝด๋‚˜ ŒจŠค๋Š”  €žฅ•˜ง€ •Š๋Š”๋‹ค.
    •  €žฅ•˜๋Š” ƒƒœ ๋ฐ †„
      • ขŒ‘œ ๋ณ€™˜ ๋งคŠธ๋ฆญŠค
      • ด๋ฆฌ•‘ ˜—ญ
      • strokeStyle
      • fillStyle
      • globalAlpha
      • lineWidth
      • lineCap
      • lineJoin
      • miterLimit
      • shadowOffsetX
      • shadowOffsetY
      • shadowBlur
      • shadowColor
      • globalCompositeOperation
      • font
      • textAlign
      • textBaseline
    • restore()
      • ๊ทธ๋ฆฌ๊ธฐ ปจ…ŠคŠธ˜ ƒƒœ๋ฅผ ๋ณต›•œ๋‹ค.
      • save()๋กœ  €žฅ•œ ƒƒœ๋Š” Šคƒ— Œ“ด๊ณ  restore()๋ฅผ ˜ธถœ• ๋•Œ๋งˆ๋‹ค Šคƒ˜ ƒ‘—„œ๋ถ€„ƒƒœ๋ฅผ ๋ถˆ๋Ÿฌ˜จ๋‹ค.

2.10. ”ฝ…€๋กœ ๊ทธ๋ฆฌ๊ธฐ

  • ImageData˜• ๊ฐฒด๋ฅผ ƒ„•˜—ฌ บ”๋ฒ„Šค œ„˜ ๋น„Šธ๋งต ด๋ฏธง€๋ฅผ ”ฝ…€ ๋‹จœ„๋กœ กฐž‘•  ˆ˜ žˆ๋‹ค.
  • ImageData˜ †„
    • width
    • height
    • data
      • ”ฝ…€ ๋ฐด„ฐ๋ฅผ ๋‚˜ƒ€๋‚ด๋Š” ˆž(0~255)๋กœ ด๋ฃจ–ด„ 1ฐจ› ๋ฐฐ—ด.
      • ๋ฐฐ—ด€ 4๊ฐœ˜ ๊ฐ’ด •œ๋ฌถŒœผ๋กœ 1”ฝ…€ด ๊ฐ€„  •๋ณด(R, G, B, Alpha)๋ฅผ ๋‚˜ƒ€๋‚ธ๋‹ค.

2.11. ด๋ฏธง€๋ฅผ URL๋กœ –ป๊ธฐ

  • บ”๋ฒ„Šค๊ฐ€ ๊ฐ€„ toDataURL()„ ˜ธถœ•˜—ฌ บ”๋ฒ„Šค ๋‚ดšฉ„ URL๋กœ –ป–ด˜ฌ ˆ˜ žˆ๋‹ค.
  • toDataURL(type)
    • ๊ทธ๋ฆฌ๊ธฐ ปจ…ŠคŠธ๊ฐ€ •„๋‹ˆ๊ณ  บ”๋ฒ„Šค๊ฐ€ ๊ฐ€„ ๋ฉ”„œ๋“œด๋‹ค.
    • type
      • ด๋ฏธง€˜ ธฝ”๋”ฉ ๋ฐฉ๋ฒ•„ MIME ƒ€ž…œผ๋กœ ง€ ••œ๋‹ค.
      • ๊ธฐ๋ณธ๊ฐ’€ 'image/png'ด๋‹ค.
      • 'image/jpeg'ง€ • ‹œ ๋‘๋ฒˆงธ ธˆ˜๋กœ ˆž(0.0~1.0)๋ฅผ ๋„–ด ด๋ฏธง€˜ ’ˆˆ„ ง€ ••  ˆ˜ žˆ๋‹ค.

2.12. • ๋‹ˆ๋ฉ”ด…˜

  • ผ • ๊ฐ„๊ฒฉœผ๋กœ บ”๋ฒ„Šค  „ฒด๋ฅผ ๋‹ค‹œ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•œผ๋กœ • ๋‹ˆ๋ฉ”ด…˜„ ๊ตฌ˜„•  ˆ˜ žˆ๋‹ค.

3. ˜ˆ œ


4. ฐธ๊ณ  ž๋ฃŒ

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:41
Processing time 0.0315 sec