JavaScript canvas: опис, можливості, приклади, відгуки

JavaScript canvas: опис, можливості, приклади, відгуки

Полотно створюється з тегом canvas, але коли говорять про нього, посилаються на API, який включає в себе набір функцій для малювання, ліній, прямокутників, окружностей, дуг, масштабування, перетворення графічних елементів.

У випадку полотна на веб-сторінці це прямокутна область для растрового зображення, в якому кожній координаті присвоюється колір. Canvas JavaScript не створює векторні об 'єкти в стилі інших середовищ, таких як SVG або Flash, а тільки растрові як малюнок.


Фактично можна завантажити зображення в Canvas і маніпулювати його пікселями по одному. Сервіс нещодавно був включений в HTML і не підтримується старими браузерами. Для них зручно надати альтернативний контент у вигляді фіксованого малюнка або пояснювального тексту.

Технологія Canvas проти Flash

Canvas JavaScript (полотно) - це стандартний елемент HTML5, який обробляють сучасні браузери. Flash - це технологія компанії, яка вимагає встановлення плагіну. На сьогодні в більшості браузерів встановлено плагін Flash, тому як і раніше функціонують ті, які не підтримують Canvas. Однак динаміка розвитку свідчить про те, що ситуація змінитися дуже скоро, так як нові платформи вже не працюють з "" Флеш "".

Однак більшість фахівців у галузі графіки вважають, що працювати з Flash простіше і швидше, ніж з полотном, оскільки він має розширене середовище графічного дизайну (Adobe Flash CS6), а процес створення графіки Canvas JavaScript дещо важче. Ситуація повинна змінитися з появою фреймворків у стилі paper.js. Однак слід врахувати, що новий сервіс безкоштовний і відкритий, тому не потрібно витрачати гроші на ліцензію. Flash належить Adobe. Це пояснює той факт, що сьогодні складні ігри все ще створюються з його допомогою.

Якщо потрібно використовувати графіку в декількох дозволах, векторна технологія "" Флеш "" більш ефективна, ніж растровий Canvas. Але для більшості веб-графіки полотно завантажується швидше. Flash вимагає більше ресурсів для запуску, тому на мобільних пристроях у Canvas JavaScript є істотна перевага. Полотно дозволяє створювати графіку всіх видів, від прямої лінії до інтерактивних ігор, а також дозволяє редагувати зображення, змінювати тон і межі.

Ідентифікатор атрибута

Canvas - це елемент HTML, який дозволяє динамічно створювати графіку та анімацію сценаріїв. Його програми мають широку область застосування: ігри, інтерфейси, графічні редактори, динамічні ефекти та 3D-програми.

Головна перевага сервісу - він не вимагає ніякого додаткового плагіну, тільки один браузер, який підтримує JavaScript html5 Canvas: Safari, Chrome, Firefox, Opera и Internet Explorer.


Наприклад, щоб намалювати два прямокутники різних кольорів, використовують декілька функцій API з JavaScript. Спочатку зарезервують простір полотна на сторінці, використовуючи мітку HTML, а потім малюють фігури. Розміщення елемента JavaScript html5 Canvas представлено на фото.

При бажанні розміщують інші, такі як стиль, щоб вказати атрибути таблиць і визначити їх вигляд.

Далі перевіряють браузер на сумісність з Canvas, прописують код.

За допомогою getElementById () отримують елемент сторінки, який передається як параметр Canvas. Потім отримують доступ до 2D-контексту полотна і виконують стільки методів, скільки потрібно в контексті для малювання елементів анімації Canvas JavaScript.

Далі прописують повний код виконання.

Зображення прямокутника

Щоб намалювати простий сірий прямокутник 450 х 350 пікселів, що займає весь полотно, прописують код.

Дані width і height визначають розмір поверхні. Положення, яке займає цей полотно всередині веб, визначаться тим місцем, де пишуть елемент HTML. Приклади JavaScript Canvas можна розмістити всередині таблиці або всередині плаваючого контейнера.


Якщо платформа не підтримує стиль, з 'явиться текст "Ваш браузер не підтримує Canvas". Тоді розміщують тег із захопленням малюнка, який створює полотно. Щоб мати можливість посилатися на конкретний елемент в коді Javascript, зручно дати йому ідентифікатор, наприклад, id = miCanvas.

Коли створено елемент, виконують код JS, який робить малюнки. Це має бути зроблено після створення полотна. Один із способів виконання - використовувати властивість onLoad. Як тільки сторінка завантажена, виконується функція drawCanvas ().

Перше, що потрібно зробити, це отримати вузол DOM, використовуючи інструкції: var canvas = document.getElementById ('miCanvas'), і передати як параметр ідентифікатор елемента полотна. Далі отримують об 'єкт контексту JavaScript Canvas text:var context = canvas.getContext ('2d').

Існує два можливих контексту: 2d для малювання в двох вимірах і webgl для зображення в трьох вимірах. Ви можете застосувати всі функції та властивості, пов 'язані з об' єктом контексту.

Система координат

Початком координат є точка (0,0), значення координати X йдуть вправо, а значення координати Y йдуть вниз, на відміну від систем традиційних координат. Розташування об 'єкта виконують відносно початку координат, наприклад, прямокутник знаходиться в позиції (90,70). Розмір полотна Canvas становить 450 в ширину і 350 у висоту для рядка: context.fillRect (0, 0, 450, 350). Буде намальована заповнена фігура з верхнім правим кутом в точці (0,0), шириною 450 і висотою 350, тобто вона займе весь полотно прикладу. Щоб намалювати прямокутник без заливки, застосовують: strokeRect (x, y, ширина, висота).


У Canvas немає певних функцій для малювання багатокутників, включаючи трикутники і п 'ятикутники (крім прямокутника). Спосіб роботи з полотном - малювати форми або шляхи (paths). Щоб побудувати форму, спочатку ініціалізують beginPath (), потім розміщують курсор у початковій точці, застосовуючи moveTo (x, y). Там буде створено форму з різними можливостями для зображення.

Лінії, дуги та криві можна виконати за допомогою: stroke (), яка малює відкриту або закриту форму без заливки. Якщо зіставити останню точку з першою, форму буде закрито. Fill () малює замкнуту форму із заливкою. Якщо вона була відкрита, функція створює пряму від останньої до початкової точки, щоб завершити її.

Інструмент створення прямої лінії ClosePath

Використовують closePath () для створення прямої від останньої до початкової точки.

Можна виконати попередній код, скопіювавши і вставивши його в поле, а потім натиснути кнопку "Показати написаний код".

Для зображення кривих існують три основні методи:


  • Arcos, дуги.
  • Curvas de Bezier, криві Безьє.
  • Curvas cuadráticas, квадратичні криві.
  • addColorStop (0, "червоний");
  • addColorStop (1, «white»).

Для малювання радіальних градієнтів Canvas має функцію: createRadialGradient (x1, y1, r1, x2, y2, r2).

Вона визначає радіальний градієнт на основі двох кола, кожна з яких з положенням його центру (x, y) і радіусу (r). Якщо центр обох кола однаковий, то ефект буде рівномірним, тоді як в іншому випадку буде створено ефект сфери, що залежить від радіусу.

Робота з зображеннями

Canvas може працювати з зображеннями у найпоширеніших форматах (GIF, JPEG, PNG) і має функції керування - розмір та поворот на рівні пікселів. Це дає великі можливості для обробки малюнків за допомогою полотна. Ви можете застосовувати зображення як тло, робити ескізи, масштабування та змінювати колір.

Першим кроком роботи з полотном є завантаження фото. Є кілька способів зробити це. Поки воно не буде повністю завантажено, користувач не зможе з ним працювати. Два найбільш поширених способи завантаження:

  1. Об 'єкт всередині Javascript. Використовуючи нове зображення, створюють екземпляр об 'єкта Image, потім присвоюють йому назву і починають використовувати його після завантаження.
  2. Зображення веб-сторінки. За допомогою тега завантажують малюнок з тіла сайту і присвоюють йому ідентифікатор, наприклад, ім 'я, щоб отримати доступ до нього з використовуваного document.getElementById.

Якщо потрібно, щоб воно було видно тільки після обробки, застосовують властивість hidden в тегі. Є й інші способи завантаження, наприклад, використовувати створений малюнок в іншому об 'єкті. Його також можна завантажити за допомогою методу data: url. Коли завершено звантаження, можна малювати, використовуючи drawImage, який підтримує кілька форматів: drawImage (зображення, х, у). Малюють зображення на полотні, розташувавши верхній лівий кут у координатах (x, y).


JavaScript Canvas drawimage (зображення, x, y, ширина, висота) дозволяє масштабувати малюнок. Перші три параметри мають те ж значення, що і в попередньому випадку. Ширина та висота визначають розмір (у пікселях), де буде показано графіку. Якщо макет більший від оригіналу, збільшується зображення, а якщо менше - мініатюризація. Якщо ви бажаєте, щоб зображення не деформувалося, необхідно підтримувати співвідношення ширини та висоти вихідного зображення.

DrawImage (зображення, x1, y1, ширина1, висота1, x2, y2, ширина2, висота2) масштабує частину малюнка. За допомогою цієї функції на полотні буде показано тільки вміст кольорової рамки, її увімкнули як фон. Ця функція бере частину вихідного зображення, визначену як x1, y1 (ширина 1, висота 1) і малює цю частину в іншій позиції (x2, y2) і в іншому масштабі (ширина 2, висота 2). У цьому випадку створюють збільшення області, тому що значення ширина і висота 2 більше, ніж 1.

Приклад ClearRect

ClearRect малює прозорий прямокутник на полотні. На відміну від функцій rect, strokeRect або fillRect, які зображують кольорову фігуру. Не слід плутати це з малюванням білого прямокутника.

Фонове зображення встановлюється CSS, на полотні з 'являється чорний прямокутник. Якщо його закрити білим фоном, прозорий буде прихований. Замість цього краще використовувати функцію clearRect для малювання Canvas JavaScript "чистого" прямокутника по всьому полотну, таким чином дозволяючи малюнкам просвічуватися.

Можна також очистити полотно шляхом встановлення ширини або висоти - просто встановити їх на полотні, присвоївши йому нове значення:

  • // canvas.width = 600;
  • width = canvas.width.

При цьому виконується скидання матриці перетворення.

Canvas JavaScript clearrect очищає всі пікселі на полотні в цьому прямокутнику (x, y, w, h) до прозорого чорного. Функція clearCanvas () може бути використана для точного очищення креслення і тексту полотна. Ця функція корисна, коли потрібно вилучити весь контекст, щоб додати нові малюнки на порожній макет. Він повинен очищати його кожен раз, коли переміщається миша і малюється нова лінія.

Якщо натиснути кнопку "Встановити номер", випадкове число від 1 до 100 відображається на полотні. Кнопка "Очистити" забирає все з контексту, щоб не показувати числа одне над іншим. Це станеться, якщо знову натиснути кнопку "Встановити номер".

Синтаксис в даному випадку такий: context.clearRect(x, y, w, h).

Це приклад коду для малювання в Canvas JavaScript заповненого прямокутника, використовуючи fillRect, якому потрібно очистити центральну частину. FillRect застосовує ширину і висоту полотна, а clearRect використовує відсотки від цих значень для створення рамки. У цьому прикладі показано лише метод Canvas JavaScript clear. X, y, ширина і висота очищеного прямокутника показані у відсотках.

Послідовність очищення:

  • Завантажити полотно і намалювати лінії на ньому.
  • Викликати clearRect ().
  • Змінити розмір, маніпулюючи шириною і висотою полотна і div-елементами зі співвідношенням пікселів 1: 1.

Відгуки користувачів

Canvas відмінно справляється з інтеграцією багатьох сторонніх постачальників, таких як Flipgrid, Padlet і Storyline. Тому він дуже зручний для дизайнера.

У відгуках користувачі про функціональність сервісу для роботи з Canvas JavaScript повідомляють наступне:

  • Використовує простий Rich Text Editor, яким легко створювати текст, вставляти картинки і відео, покращувати текст з редактором HTML. Це дає дизайнеру можливість створювати більше, ніж просто текст на сторінці.
  • Відмінно працює зі сторонніми постачальниками, інтегруючи їх прямо в Canvas. Ця властивість дозволяє використовувати додаткові інструменти, такі як McGraw-Hill Connect, Kaltura, Box, Office 365, Google Drive і багато інших.
  • Полотно має каскадний підхід до організаційного дизайну на рівні кореневого облікового запису або в рамках будь-якого додаткового. Кожен субрахунок успадковує атрибути своїх "" батьків "". Управління всіма цими елементами стало неймовірно простим завдяки використанню SIS-імпорту файлів .csv. Instructure постійно оновлює документацію сервісу.
  • Canvas - це система управління навчанням, яка може використовуватися невеликою організацією, що пропонує всього пару уроків на місцевому рівні, або гігантською організацією, що пропонує тисячі курсів для сотень тисяч студентів по всьому світу.
  • Масштабованість екземпляра Canvas дуже потужна. Сервіс інтуїтивно зрозумілий і добре налаштований.
  • Надає гнучку платформу, де користувач може поділитися досвідом з іншими. Підходить для інтеграції з багатьма корисними службами, такими як Drive. Це досить зручно, оскільки можна використовувати тільки ті функції, які потрібні.
  • Інтеграція з Drive і Gmail може бути більш інтуїтивною.
  • У Canvas відмінне обслуговування клієнтів. Додано нові продукти і поліпшення.
  • Полотно дуже гнучке, дозволяє дублювати окремі завдання.
  • Canvas добре інтегрується з Crocodoc для онлайн коментування та оцінки робіт, має відмінні функції імпорту.

Одна з важливих особливостей, яку хотіли б бачити користувачі, це можливість анотувати PDF-файли або інші документи на веб-платформі Canvas. Зараз у веб-версії такої функції немає.