HTML5 CANVAS рдХрджрдо рд╕реЗ рдХрджрдо: рдЫрд╡рд┐рдпрд╛рдБ

CANVAS рдХрджрдо рд╕реЗ рдХрджрдо:

  1. рдореВрд▓ рдмрд╛рддреЗрдВ
  2. рдЫрд╡рд┐
  3. рдкреЛрдВрдЧ
  4. рдЯреИрдЧ


рдХреИрдирд╡рд╛рд╕ рдкрд░ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреА рдирд┐рд░рдВрддрд░рддрд╛, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрджрд┐рдо рдХреЗ рд╕рд╛рде рдХреИрдирд╡рд╛рд╕ рдкрд░ рдбреНрд░рд╛рдЗрдВрдЧ рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдФрд░ рдХреБрдЫ рд╢реНрд░рдо рд▓рд╛рдЧрддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдПрдХ рдФрд░ рд╡рд░реНрд╖ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рдВрдЧрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдХреИрдирд╡рд╕ рдПрдкреА рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЫрд╡рд┐ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЫрд╡рд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛, рдФрд░ рджреВрд╕рд░рд╛ рдФрд░ рдЕрдВрддрд┐рдо рдЪрд░рдг рдЪрд┐рддреНрд░ рдкрд░ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдбреНрд░рд╛рдЗрдореЗрдЬ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЖрдЗрдП рджреЛрдиреЛрдВ рдЪрд░рдгреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред



рдПрдХ рдирдИ рдЧреНрд░рд╛рдлрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛:

var img = new Image(); //     img.src = 'image.png'; //        
      
      





рд╡реИрд╕реЗ, рдЫрд╡рд┐ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЫрд╡рд┐ рд╡рд░реНрдгрд┐рдд рд╣реИ:

 img.src = 'data:image/gif;base64,R0lGODlhDAAMAOYAANPe5Pz//4KkutDb4szY3/b+/5u5z/3//3KWrfn//8rk8naasYGkuszY4Mbg8qG+0dzv9tXg5sTg8t/o7vP8/4iqv9ft9NPe5qfD1Mfc56O/0YKlu+Lr8M3Z4JCwxuj2/Of0+eDz9+rw9Z68z8/n8sHe8sbT3Ju6zuDv96nE1Onw9Nbh6cvX39Hq89Hq8u77/srW3tbh54Kku8ba56TD1u37/vL8/vL8/9ft9ebu8+Ps8bzM1Ymsw7XR4Nnj6Yanvsnj8qrI2Or2/NTf5tvl68vY3+r3/HqdtNji6OXt8eDz+dLc477c7bDO3t7n7d7v9s3Z4dbs9N/y98Pd6PX+/8/b4f7//+Hp7tDo8vv//+fu84GjunKWro6uxHqctOfu9P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAMAAwAAAeEgCJfg4RfWlo5KlpgjI2OOklWBwcBAVmXCQlXHAUFVBkGBjMUNzZOEy81IF2sXUZCH0QrDyhPGzICAkohUj4XHhoQKQsLGDgWUTFIJxUjUy0uWNIkQxE9W9gMDD9BCgpLAEBNXl5H5F40DlUDEkxc71wICDwlDQBQHQ0EBEUsJjswBgQCADs=';
      
      







1. рдбреНрд░рд╛рдЗрдореЗрдЬ



рдЕрдм рд╣рдо рдХреИрдирд╡рд╛рд╕ рдкрд░ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдбреНрд░рд╛рдЗрдореЗрдЬ рдлрдВрдХреНрд╢рди рд╣реИред

 drawImage(image, x, y) //  x  y      ,     
      
      





рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдХреЛ рдЫрд╡рд┐ рд╕реНрд░реЛрдд рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдбреНрд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╣реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╕ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдирд╣реАрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 var img = new Image(); //   img.onload = function() { //           /* -  */ } img.src = 'myImage.png'; //   
      
      





рддреЛ рд╣рдо рд╢рд╛рдпрдж рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкрд╣реБрдБрдЪ рдЧрдП рдЬрд╣рд╛рдБ рдЖрдк рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 <!doctype html> <html> <meta charset='utf-8'> <head> <title>imgExample</title> </head> <body> <canvas id='example'> </canvas> <script> var example = document.getElementById("example"), ctx = example.getContext('2d'), //  pic = new Image(); // ""  pic.src = 'http://habrahabr.ru/i/nocopypast.png'; //  ,    pic.onload = function() { //  onLoad,      ctx.drawImage(pic, 0, 0); //       0, 0 } </script> </body> </html>
      
      





рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реАрдб рдХрд╛ рд▓рд┐рдВрдХред



2. рдкреБрд▓-рдкреБрд▓



рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдПрдХ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдбреНрд░рд╛рдЗрдВрдЧ рддрдХ рд╕реАрдорд┐рдд рдерд╛, рддреЛ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЙрдк-рдЖрдЗрдЯрдо "рдЫрд╡рд┐рдпрд╛рдВ" рддрдХ рд╕реАрдорд┐рдд рдерд╛ред рдЗрд╕рд▓рд┐рдП рдЕрдм рд╣рдо рдЫрд╡рд┐ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рдбреНрд░рд╛рдЗрдореЗрдЬ рдлрдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛:

 drawImage(image, x, y, width, height) //  width, height     
      
      





рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓реЗрдВ рдФрд░ рдбреНрд░рд╛рдЗрдореЗрдЬ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ:

 ctx.drawImage(pic, 0, 0, 300, 150);
      
      





рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реАрдб рдХрд╛ рд▓рд┐рдВрдХред



3. рд╣рдо рдЫрд╡рд┐ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ



рдЖрда рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рддреАрд╕рд░рд╛ рдбреНрд░реЙрдЗрдореЗрдЬ рдХреЙрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight); //      // sx, sy, sWidth, sHeight     - // dx, dy, dWidth, dHeight       
      
      





рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ рдФрд░ рдбреНрд░рд╛рдЗрдореЗрдЬ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддреАрд╕рд░реА рдмрд╛рд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ:

 ctx.drawImage(pic, 25, 42, 85, 55, 0, 0, 170, 110);
      
      





рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реАрдб рдХрд╛ рд▓рд┐рдВрдХред



4. рдЪреБрдиреМрддреА



рдЕрдм рдпрд╣ рд╕рдм рдХреБрдЫ рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдирдХреНрд╢рд╛ рд╣реЛрдЧрд╛, рди рдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рдореМрдЬреВрджрд╛ рдЦреЗрд▓ рд╕реЗ, рдмрд▓реНрдХрд┐ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдПрдбрд┐рдЯрд░ рдХреЛ рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ рдмрдиреА рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдПрдХ рдЯреНрд░реИрдХ, рдПрдХ рдШрд░ рдФрд░ рдПрдХ рд╕рдорд╛рд╢реЛрдзрди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдирдХреНрд╢реЗ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЯрд╛рдЗрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡реЗ рд╕рднреА рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдЗрдХрдЯреНрдареЗ рд╣реЛрддреЗ рд╣реИрдВ рдЙрд╕реЗ рдЯрд╛рдЗрд▓рд╕реЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рддрд╕реНрд╡реАрд░ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЙрдмрдВрдЯреВ рдХреЗ рддрд╣рдд рдкрд┐рдВрдЯрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдЫрд╡рд┐

рддреЛ, рдЖрдпрд╛рдо 8 рд╕реЗ 8 рд╡рд░реНрдЧ рдмреНрд▓реЙрдХ 32 рдкрд┐рдХреНрд╕реЗрд▓ рдЪреМрдбрд╝рд╛ рд╣реЛрдЧрд╛ред рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╣рдореЗрдВ рдПрдХ рдШрд░ рдФрд░ рдПрдХ рдорд╛рд░реНрдЧ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдШрд░ рдХреЗ рддрддреНрд╡ рдкреЗрди рд╕реЗ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдИрдВрдЯ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдЪрд┐рдд рд░рдВрдЧ рдХреЗ рд╕рд╛рде рдЧреБрд╣рд╛ рдХреЛ рднрд░рдиреЗ рдФрд░ рд╢реЛрд░ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдШрд╛рд╕ рдФрд░ рд░реЗрдд рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЖрджрд┐рдо рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдВрдХреЗрддрд┐рдХ рд░реВрдк рд╕реЗред

рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЪрд┐рдордЯреА рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреИрд╕рд╛ рдХрд┐ var map = [[{x: 1, y: 4} ... x рдФрд░ y рдХреЗ рдорд╛рди рдЪрд┐рддреНрд░ рд╕реЗ рдХрд┐рд╕ рддрддреНрд╡ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╛рдиреА рдпрджрд┐ рдореВрд▓ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЛ рдПрдХ рд╡рд░реНрдЧ 32 ├Ч 32 рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдФрд░ foresample :

 <!doctype html> <html> <meta charset='utf-8'> <head> <title>imgExample</title> </head> <body> <canvas id='example'> </canvas> <script> var example = document.getElementById('example'), //   ctx = example.getContext('2d'), //   cellSize = 32, //      pic = new Image(), // ""  map = //     [ [{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4}], // 1  [{x:1,y:4},{x:1,y:1},{x:2,y:1},{x:3,y:1},{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4}], // 2  [{x:1,y:4},{x:1,y:2},{x:2,y:2},{x:3,y:2},{x:1,y:4},{x:1,y:3},{x:1,y:3},{x:1,y:3}], // 3  [{x:1,y:4},{x:3,y:4},{x:2,y:3},{x:3,y:4},{x:1,y:4},{x:1,y:3},{x:1,y:4},{x:1,y:4}], // 4  [{x:1,y:4},{x:3,y:4},{x:2,y:4},{x:3,y:4},{x:1,y:4},{x:1,y:3},{x:1,y:4},{x:1,y:4}], // 5  [{x:1,y:4},{x:1,y:4},{x:1,y:3},{x:1,y:4},{x:1,y:4},{x:1,y:3},{x:1,y:4},{x:1,y:4}], // 6  [{x:1,y:4},{x:1,y:4},{x:1,y:3},{x:1,y:3},{x:1,y:3},{x:1,y:3},{x:1,y:4},{x:1,y:4}], // 7  [{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4},{x:1,y:4}] // 8  ]; //     (x  y )      //    88  example.width = 8 * cellSize; example.height = 8 * cellSize; pic.src = 'https://habrastorage.org/getpro/habr/post_images/e85/727/cb1/e85727cb1a88099325eaf5b243d4c41f.png'; pic.onload = function() { //  onLoad,      for (var j = 0 ; j < 8; j ++) for (var i = 0; i < 8; i ++) //     ''          ctx.drawImage(pic, (map[i][j].x-1)*cellSize, (map[i][j].y-1)*cellSize, 32, 32, j*cellSize, i*cellSize, 32, 32); } </script> </body> </html>
      
      





рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ



All Articles