С чего начать работу с элементом canvas


Оглавление (нажмите, чтобы открыть):

Начало работы с HTML canvas

HTML элемент – это мощное решение для создания пиксельной графики в Web c использованием JavaScript. Canvas позволит вам создавать замечательные визуальные эффекты – нужно только немного попрактиковаться.

В этом туториале мы создадим canvas объект, добавим к нему простые визуальные эффекты и анимируем их.

01. Создаём страницу

По своей сути Canvas – это HTML элемент, который располагается на странице и растягивается таким образом, чтобы полностью покрывать необходимую область, на которой вы будете рисовать объекты.

Начнем с создания простой страницы и canvas объекта.

02. Растягиваем canvas

Нам понадобится много пространства для работы, поэтому мы растянем наш canvas на весь экран. Мы также зададим для него черный фон, чтобы нам было проще работать и избавимся от отступов.

Этот CSS код должен помочь:

03. Активируем canvas

Следующее, что нам понадобится сделать – это добавить немного JavaScript кода, чтобы подготовить наш canvas к работе. Создадим DOMContentLoaded ивент, чтобы скрипт не пытался запуститься до того, как canvas элемент будет готов.

Мы также сделаем так, чтобы разрешение canvas элемента соответствовало области, которую он покрывает: иначе canvas будет менять свой размер без изменения разрешения, что приведет к размытости и видимым пикселям.

04. Рисуем форму

Вы, наверное, заметили, что в предыдущем шаге мы создали нечто под названием “context”. С его помощью происходит рисование в canvas. Проще всего представить context как рисовальную кисть, с помощью которой мы можем рисовать линии, дуги и базовые фигуры.

Сейчас мы можем пустить наш context в дело путем написания функции drawCircle, которая создаст дугу в 360 градусов – окружность, иными словами. Определим для context дугу (arc), зададим стили для границ и заливку, затем воспользуемся функциями fill() и stroke(), чтобы отрисовать формы (stroke рисует границы).

05. Создадим много окружностей

Отлично. Теперь у нас есть функция, которая рисует круги. Теперь немного дополним код из третьего шага, чтобы создать array, описывающий окружности. Он будет хранить координаты X и Y каждой окружности, цвет и расположение.

Мы создаем array вместо того, чтобы просто рисовать окружности, потому что это позволит нам анимировать круги путем повторения содержимого массива.

06. Добавляем случайные цвета

В предыдущем шаге мы использовали пару новых функций. Начнем с randomColour(). Это фукнция, которая возвращает рандомный цвет в формате HEX. Использовать ее достаточно просто.

07. Рисуем графику на странице

Теперь мы наконец готовы использовать функцию draw(). Эта функция очищает canvas с помощью функции clearRect() – она поможет избежать отрисовывания одних объектов поверх других, когда мы начнем анимировать наши круги. Затем она пройдет через array, который мы создали ранее, и отрисует каждый круг отдельно с помощью нашей drawCircle функции.

08. Анимируем формы

Если вы сейчас опробуете этот код, то увидите статичные круги, отрисованные на странице, но мы хотим сделать их анимированными. Дла этого мы дополним нашу draw() функцию. Прежде всего, мы используем значение circle.direction, которое находится в массиве, чтобы высчитать изменения в координатах X и Y наших кругов.

Затем мы используем встроенную функцию под названием requestAnimationFrame, которая рекурсивно вызывает вызывает функцию draw(). Эта функция позволяет браузеру решить, когда вызывать функцию снова, что позволит избежать добавления таймеров для вычисления времени, когда будет нарисован следующий кадр.

09. Отпрыгивание от краев страницы

Но еще не хватает одной вещи. Теперь круги просто исчезают за пределами экрана. Давайте сделаем так, чтобы они отпрыгивали обратно!

Для этого нам понадобится новая функция bounce(circle) внутри цикла функции draw(). Функция bounce определит, когда круг находится на краю экрана и отрегулирует направление движения.

Javascript свойства и методы элемента canvas

HTML5 тег используется для отображения графики на лету при помощи скриптов (обычно JavaScript).

Тем не менее, сам по себе элемент не имеет инструментария для рисования. Это всего лишь контейнер для графики. Чтобы в действительности что-то нарисовать в элементе , необходимо использовать соответствующий скрипт.

Метод getContext() возвращает объект, предоставляющий методы и свойства для рисования в элементе .

В данном справочнике приводится информация о свойствах и методах объекта getContext(«2d»), который может использоваться для вывода в элементе текста, линий, прямоугольников, кругов и др.

Internet Explorer 9, Firefox, Opera, Chrome и Safari поддерживают элемент и его свойства и методы. Internet Explorer 8 и более ранние версии не поддерживают элемент .

Учим HTML5 Canvas за 30 минут

Сегодня будет легкий, но классный урок. Мы познакомимся с HTML 5 Canvas.

С помощью Canvas Вы сможете создавать интересные эффекты на странице, разрабатывать игры и полезные графические инструменты. При этом всем работа с HTML 5 Canvas осуществляется посредством языка программирования JavaScript, но там все очень просто. Его поддержка радует во всех смыслах, так как Canvas поддерживается практически везде, даже на старых версиях Internet Explorer.

Соответственно мы разберем работу с самим тегом Canvas, поговорим о его особенностях и нарисуем простейшие графические примитивы, такие как квадрат, круг, треугольник. Затем с полученными знаниями разработаем простенькую программу, позволяющую рисовать, а затем на автомате воспроизводить рисунок. Такая штука раньше была очень популярна на Facebook.

Поехали!

Для начала создадим обычную структуру HTML документа и разместим тег Canvas. Напишем между тегами текст, который будет отображаться, если браузер не поддерживает Canvas. Также имеет смысл дать идентификатор >

Теперь есть смысл начинать писать наш код.

Первое, что нужно сделать в скрипте это подгрузить сам Canvas.

Далее создадим переменную, которая вообще-то называется context, но стандартно пишут ctx. Она будет хранить в себе контекст этого загруженного canvas-a. Загружается он легко, просто обращаетесь к этой переменной canv и вызываете метод getContext. Первым аргументом указываете, какой хотите контекст. Их стандартно 4, но чаще всего используется двумерный контекст, то есть 2d.

Пропишем высоту и ширину Canvas так, чтобы он отображался на всю страницу. По умолчанию его параметры 300x150px. Чтобы не появлялись полосы прокрутки необходимо прописать тегу Canvas значение display: block.

Приступим к рисованию прямоугольника!

Первое, что мы сделаем — нарисуем прямоугольник. Для этого нужно обратиться к нашему контекту, то есть к переменной ctx и указать свойство fillStyle, хотя можно этого не делать и тогда цвет у прямоугольника будет черный.

Далее вызываем метод fillRect, который отвечает за то, чтобы нарисовать непосредственно сам квадрат. Он принимает 4 аргумента: позиции по оси X и Y, на который будет начинаться наш будущий прямоугольник.

После того как Вы сохраните документ и обновите в браузере страницу, то увидите долгожданный прямоугольник.

При этом мы можем его очень просто анимировать. Для этого создаем простую переменную, например, x, которая будет хранить расположение прямоугольника по оси X.

Теперь создаем простейший таймер, который каждых 10 миллисекунд будет перерисовывать этот прямоугольник и увеличивать его позицию по оси X. В начале каждого цикла (таймера, повторения) закрашиваем весь холст белым цветом.

Получаем вот такой код и анимацию

Вообще-то делать анимацию в Canvas через setInterval нет особого смысла, это делается через requestAnimationFrame.

Как нарисовать прямоугольник, но не заполнять его? Чтобы у него были только border-ы. Для этого есть метод strokeRect, который принимает точно те же аргументы, что и fillRect

На выходе Вы получается вот это:

Можно обратить внимание, что цвет border-a прямоугольника не magenta. Так происходит, потому что он вызывается не через fill, а через stroke.


Можно изменить цвет обводки прямоугольника, а заодно и его ширину следующим образом:

Учимся делать круг!

Круг на Canvas делается также очень просто. Для этого есть метод arc. Он принимает 6 параметров: 1 — позиция по оси x, 2 — позиция по оси y, 3 — радиус круга, 4 — начало угла (start angle), 5 — конец угла (end angle), 6 – рисовать круг по часовой стрелке или против. Последний параметр не обязательный. Start angle начинается справа, так как он задается в медианах и когда Вы указываете end angle, то указываете как далеко он пойдет.

Графический онлайн-редактор Canva: подробная инструкция по использованию

Создание графики является важной задачей для всех, кто занят в маркетинге, рекламе, интернет-бизнесе или блогинге. Мы постоянно видим бесконечное количество изображений: рекламные баннеры, заставки видеороликов, картинки в мессенджерах и социальных сетях.

Времена, когда продвинуть свой продукт, услуги или статьи только с помощью текстов, ушли в прошлое. Поисковики обращают все больше внимания на количество и разнообразие графических материалов, поэтому графика стала влиять не только на поведение пользователей на сайте, но и на SEO-продвижение.

Если раньше создание графики требовало немалых затрат на услуги дизайнера или хороших навыков работы в профессиональных программах вроде Фотошопа, то теперь им на смену приходят удобные и простые в использовании онлайн-редакторы, позволяющие создавать уникальные и стильные изображения, даже если вы никогда не имели дела с дизайном (причем нередко бесплатно).

Canva.com – это один из самых популярных графических сервисов. Ниже вы найдете подробную инструкцию по использованию Canva на сайте и в мобильном приложении.

Регистрируемся и выбираем тип изображения

При регистрации бесплатного профиля сервис спрашивает пользователя о роде занятий и цели использования Canva: для личного пользования, для малого бизнеса, образования, некоммерческой организации или большой компании. В соответствии с этим выбором редактор при первой загрузке автоматически предложит различные типы картинок, которые можно создать.

Например, для личных целей это будут открытки, календари и пригласительные, для малого бизнеса – оформление социальных сетей, для учеников и преподавателей – презентации, планы уроков и расписание занятий. Список всех доступных форматов можно найти на главной странице редактора или воспользоваться поисковой строкой.

Каждому типу дизайна соответствуют свои размеры и набор шаблонов, которые можно будет использовать в качестве заготовок. Стоит обратить внимание, что изменить размер созданного файла в бесплатной версии Canva нельзя (в премиум-версии подписка позволяет конвертировать изображение сразу в несколько других размеров, автоматически подгоняя элементы под новое соотношение сторон и масштабируя элементы).

“Canva для работы” стоит 12,95 $ в месяц. Посмотрите список преимуществ платной версии над бесплатной.

Однако, если вы не нашли формат с нужным вам размером, нажмите “Настраиваемые размеры” в правом верхнем углу и задайте размеры вручную.

Выбираем шаблон

После выбора формата пользователь попадает на экран редактирования макета с белым “холстом”, несколькими вкладками и каталогом шаблонов слева. Шаблоны представляют собой образцы дизайна, разделенные на тематические категории.

Они помогают существенно сэкономить время – ведь в этом случае вам не нужно придумывать, как будет выглядеть ваш дизайн. У вас уже есть пример, созданный профессиональными дизайнерами, который остается только адаптировать согласно вашим задачам или вкусам.

Найти подходящий шаблон можно визуально или по ключевому слову в поисковой строке (например, “бизнес-презентация” или “открытка из отпуска”). Чтобы рассмотреть шаблон в деталях, кликните по нему мышкой. В этом случае он займет место чистого макета. Кроме того, подборка шаблонов есть на сайте.

Выбирая шаблон, ориентируйтесь скорее на его общую композицию, поскольку любые его детали можно изменить: отредактировать цветовую палитру, заменить графические элементы, увеличить или уменьшить их количество, поменять их расположение, степень прозрачности и так далее.

Редактируем шаблон или создаем картинку с нуля

Рассмотрим подробнее, что именно можно изменять в шаблоне. Те же функции помогут и в том случае, если вы не нашли подходящего макета и хотите создать картинку самостоятельно.

Процесс создания изображения в профессиональных инструментах дизайна вроде Adobe Photoshop, Gimp и других программах напоминает работу художника, выбирающего кисти, карандаши и краски.

Работа же в Canva похожа на сборку конструктора или пазла: можно только выбирать и бесконечно комбинировать детали из каталога, который включает фоны, текстуры, рисунки, геометрические фигуры, стоковые фотографии, графики, рамки и т. д. Все эти элементы можно найти во вкладках “Фон” и “Элементы”.

Каждому типу элемента соответствует свой набор инструментов редактирования. Они появляются в зависимости от того, какой элемент в данный момент выделен мышкой. Например, если выделить фотографию, появится меню с набором фильтров, ручных настроек контраста, яркости, виньетирования, степени прозрачности и других.

А если выделить фигуру, фон или простой рисунок, то в левом верхнем углу панели появится индикатор цвета, открывающий цветовую палитру изображения. Цвета таких элементов можно изменять. Кстати, для этого у Canva есть полезный инструмент по подбору цветовых сочетаний, выделяющий ключевые цвета загруженной в него фотографии.

Менять размер и расположение элементов, включая фотографии, можно просто “растягивая” или “сжимая” их мышкой и перемещая по макету. Рисунки и фигуры при этом будут вести себя как векторные изображения – их качество не будет ухудшаться при увеличении размера.

Заменяем текст

Текст – тоже один из типичных элементов дизайна. В соответствующей вкладке есть готовые блоки с красивыми сочетаниями цветов, однако для русского языка они могут не пригодиться. Русский алфавит поддерживают чуть более ста исходных шрифтов (а загружать собственные шрифты можно только в платной версии сервиса). Однако здесь тоже есть из чего выбрать.

Дополнительные настройки текста включают: размер шрифта, цвет, выравнивание по центру, правому или левому краю, а также межбуквенный и межстрочный интервалы, которые помогут дополнительно разнообразить типографику вашего дизайна.

Используем собственные фотографии и логотипы

Вкладка “Загрузки” позволяет сохранить в свой аккаунт файлы с жесткого диска и сразу добавить их в изображение. Их можно будет использовать и во всех последующих макетах на любом компьютере, поэтому не нужно волноваться, что под рукой не будет нужного файла.

Для быстрого размещения фотографии в дизайне Canva используются фоторамки различных форм и конфигураций. Встроить фотографию в такую рамку можно, перетащив ее мышкой с левой части экрана. Если автоматический вариант встраивания не подходит, фото можно кадрировать и откалибровать видимую область вручную.

Помимо загрузок файлов с компьютера, через вкладку “Еще” можно подключить дополнительные приложения и связать учетную запись Canva с вашими профилями в Инстаграме и Фейсбуке. Все фотографии из альбомов этих социальных сетей сразу отобразятся как уже загруженные в ваш профиль. Остается только добавить их в макет.

Дополняем дизайн стоковыми фото

Если для коллажа вам не хватает собственных фотографий, всегда можно дополнить его стоковыми снимками. Тем более что в Canva есть собственный встроенный фотобанк с бесплатными и платными вариантами (цена одной картинки для одноразового использования, как правило, составляет 1 $). Зайдите во вкладку “Элементы” и произведите поиск по ключевому слову, выбрав вкладку “Фото”.

Бесплатные и платные фотографии будут отмечены соответствующими значками. Как правило, портреты и фото с изображением людей относятся к платной категории, но и здесь есть исключения.

Стоковые фотографии можно использовать как дополнительные элементы, если они хорошо сочетаются с выбранной цветовой палитрой и подкрепляют созданное в коллаже настроение.

Сохраняем файл

Когда дизайн закончен, нажмите “Скачать” в правом верхнем углу и выберите один из доступных форматов:

  • jpeg, сжимающий фотографию для минимального размера файла;
  • png для высокого качества;
  • pdf, который больше подходит для резюме, сертификатов и других документов;
  • pdf для печати, сохраняющий максимальное качество с плотностью 300 dpi (точек на дюйм).

Такие файлы можно отправлять в типографию для последующей печати.

Мобильное приложение Canva

Одно из преимуществ Canva перед аналогами – наличие удобного мобильного приложения. В 2020 году его android-версия получила награду Google в номинации “Лучший стартап” и удерживает формирующийся по отзывам пользователей рейтинг 4,8.

Конечно, оно не является полной альтернативой веб-версии, но архив дизайнов и черновиков синхронизируется. Можно и подправить картинку, и быстро создать пост для Инстаграма.

Что же можно сделать в приложении?

  1. Создавать изображения для соцсетей, открытки, плакаты, обложки, флаеры и коллажи.
  2. Редактировать фотографии с помощью фильтров и ручных настроек.
  3. Использовать шаблоны.
  4. Вставлять фото из галереи телефона в дизайны.
  5. Накладывать текст, иконки, фигуры, рисунки, фоторамки.
  6. Публиковать дизайны с помощью электронной почты или соцсетей.
  7. Просматривать дизайны вашей команды (но создать такую команду можно только на сайте).

Основные отличия приложения от полной версии:

  1. Представлены не все форматы графики, а в основном небольшие и предполагающие минимум текста.
  2. Нельзя скачать картинку в виде файла – только напрямую опубликовать или отправить по электронной почте.
  3. Не поддерживается режим совместного редактирования изображений, который есть в полной версии.

В остальном же принцип работы на сайте и в приложении одинаков. Чтобы отредактировать или создать картинку, нужно нажать кнопку “Плюс” в правом нижнем углу и вывести на экран меню: “Шаблон”, “Текст”, “Изображения” и “Рисунок”. Функции фоторедактора становятся доступны при нажатии на фотографию, а настройки внешнего вида текста – при выделении текстового поля.

Выводы

Canva отлично подойдет не только для иллюстрирования рекламных кампаний или журналистских статей, но и владельцам бизнесов, на первый взгляд, не связанных с контентом и интернетом. Здесь найдутся шаблоны для владельцев кафе, баров и ресторанов, агентств недвижимости и туроператоров, дизайнеров интерьера и мебельных мастерских, салонов красоты, ритейла, образовательных организаций и НКО.


К главным преимуществам такого решения относятся простота использования и возможность групповой работы без привязки к компьютеру или устройству. Это особенно важно, если вы или ваши коллеги работаете не только из офиса и хотите иметь доступ к своим материалам в любое время.

Canva — обзор онлайн-сервиса для веб-дизайна

Время чтения: 27 минут Нет времени читать?

Оглавление:

Веб-дизайн — это создание визуального контента для сайтов и социальных сетей. Он помогает заинтересовать целевую аудиторию и выделиться среди конкурентов. Сегодня самостоятельно создавать дизайн несложно. Главное — научиться работать с онлайн-сервисами и приложениями. Один из таких сервисов мы рассмотрим в этой статье.

Что такое Canva?

Canva.com — онлайн-редактор для создания дизайна с помощью готовых шаблонов. У сервиса есть удобное мобильное приложение для iOS и Android. Установить его просто — в Google Play и App Store загрузка приложения бесплатна. С помощью него можно создавать дизайны максимально быстро, используя заготовки. Это удобно, когда нужно оформить посты в социальной сети или создать мини-объявление.

Конструктор будет удобен не только профессионалам, но и тем, кто совершенно не разбирается в создании дизайнов. Все максимально просто и понятно. Единственный существенный недостаток — многие клипарты платные.

Чем полезен сервис и приложение Canva?

Сервис может понадобиться, когда нужно быстро создать интересный дизайн, а заморачиваться не хочется.

Чтобы начать, откройте коллекцию шаблонов. Вкладка “Обзор шаблонов”. В панели слева выберете тип шаблона.

Вы можете использовать один из 50000 готовых шаблонов, менять детали и цвет, вставлять свои изображения. Также можно создать дизайн с нуля, не пользуясь шаблонами.

Бесплатная библиотека фотографий

Если нужны качественные фото, но нет возможности сделать их, просто скачайте их в библиотеке. Фото можно редактировать, обрезать, использовать для создания графики.

Canva for Work

На сайте есть функция “создать команду”. Она нужна, если вы разрабатываете дизайн не в одиночку. Особенно полезно будет для рекламных агентств и веб-студий. Чтобы создать команду, вставьте e-mail адреса участников в специальное окно.

Чтобы пользоваться всеми преимуществами работы командой, переходите во вкладку “Canva for Work”. Вы сможете быстро делиться набросками и папками со своими коллегами. Канва для работы — платная опция. 12.95 $ в месяц на одного члена команды. Первые 30 дней использования — бесплатно. Этот тарифный план дает много преимуществ. Но если вы работаете в одиночку он не нужен.

Бренд

В разделе “Бренд” можно загрузить все необходимые атрибуты компании — корпоративные цвета и шрифты, логотипы. Это удобно, не нужно каждый раз искать материалы в компьютере, они всегда под рукой.

Папки

Ещё одна удобная фишка сайта. Чтобы не путаться среди макетов, создавайте папки в своем аккаунте и сортируйте их.

Идеи от пользователей

Когда вдохновения совсем нет, пригодится этот раздел. Там можно смотреть работы других пользователей, комментировать и лайкать понравившиеся.

Советы и рекомендации

Для тех, кто первый раз работает с сервисом, есть раздел-подсказка. Во вкладке “Обучение” есть несколько полезных гайдов и видео по обработке. Минус — материалы на английском языке.

Генератор цветовой палитры

С помощью генератора палитры можно извлечь нужные цвета из любой фотографии. Просто загрузите фото, генератор автоматически определит главные цвета. Скопируйте и сохраните номера цветов. Их можно использовать в любом приложении. Это нужно для того, чтобы не подбирать каждый раз цвета вручную. Ведь сделать это на глаз очень сложно, точное попадание почти невозможно.

Графический редактор

Встроенный графический редактор позволяет обрабатывать фотографии прямо на сайте. Для этого в редакторе есть 13 фильтров, инструменты обрезки, изменения размера и вращения. Также можно отрегулировать настройки экспозиции.

Комбинации шрифтов

В этой вкладке есть множество шрифтов, которые можно подобрать для своих целей. Но большая часть поддерживает только латиницу. Русский текст поддерживается стандартными шрифтами.

Диаграммы

Отдельно нужно отметить возможность создавать диаграммы. Круговые, гистограммы, графики — выбирай на любой вкус.

Значки

Огромное количество значков, как платных, так и бесплатных можно использовать для создания собственных макетов. Отличное применение для значков — создание обложек для Stories Highlights в Instagram.

Кому будет интересен редактор canva.com?

Канва — конструктор дизайнов, который помогает создавать качественные обложки, презентации, посты для социальных сетей, баннеры и другие материалы. Для работы в этом редакторе не требуются специальные знания. Все, что нужно — завести аккаунт. Остальные действия будут интуитивно понятны. Поэтому сервис будет полезен широкой аудитории.

Дизайнерам. Иногда дизайн-макет для клиента или наброски для проекта нужны срочно. А онлайн-редактор всегда под рукой.

Блогерам. Тысячи шаблонов для социальных сетей помогут оформлять посты, истории, обложки аккаунтов и т.д.

SMM специалистам. Продвигать аккаунт в социальной сети без красивого дизайна очень сложно. Первое, что нужно сделать перед продвижением — оформить профиль, создать единый стиль.

Экспертам. Если вы специалист в какой-то области и продвигаете свой личный бренд, вам необходим качественный дизайн. Будь то сайт или блог в Инстаграм.

Студентам. Сервис дает много возможностей для оформления студенческих работ — докладов, презентаций, расписаний, планов урока и т.д.

Предпринимателям. Сайт позволяет создавать оформление для флаеров, фирменных бланков, писем и объявлений.

Возможности сервиса Canva

Давайте более подробно рассмотрим все функции сайта, чтобы понять, как и где можно их применить.

Инструменты онлайн-конструктора

45 видов шаблонов (здесь выбор гораздо больше, чем в приложении) с возможностью менять элементы заготовок, добавлять свой текст, изменять цвета, использовать встроенные изображения или загружать свои.

Элементы дизайна — бесплатные фото, сетки, фигуры, диаграммы, иллюстрации, значки, линии, рамки.

Графический редактор Canva: 14 функций + честный отзыв

Графика и иллюстрации – неотъемлемая часть любой маркетинговой кампании. Рассмотрим, как с помощью современного сервиса графического дизайна Canva можно бесплатно создавать привлекательную графику, даже если Вы вовсе не дизайнер.

Онлайн-редактор графики и документов Canva – бесплатный инструмент, позволяющий экономить время и деньги на создании уникальных изображений.

Например, с помощью данного сервиса Вы можете совершенно бесплатно создать обложки для сторис в инстаграм или для видео, чтобы сохранить единый стиль Вашего профиля.

Теперь пару слов о том, кому же все-таки стоит обратить внимание на канву. Общими словами – сервис canva подходит для непрофессиональных дизайнеров, маркетологов, блогеров, рекламщиков и представителей малого бизнеса.

Для всех этих людей сервис станет палочкой выручалочкой. Тем более Вам не нужно будет осваивать сложные манипуляции, как в фотошопе. В сервисе Canva все просто и даже бесплатно.

вскрываем всю правду


Для начала – посмотрим на основной функционал, который предлагает базовая версия Canva (то есть бесплатная). Углубляться не будем, только общими словами:

  1. Редактирование фотографий: фильтры, обрезка кадра, улучшение качества;
  2. Каталог редактируемых шаблонов: баннеры, посты для соцсетей, рассылки, логотипы и т.д.;
  3. Библиотека стоковых фотографий: поиск нужных фотографий, клипартов, кнопок, иконок, инфографики;
  4. Собственные фотографии в дизайне: загружайте свои фотографии и создавайте на основе их нужные дизайны;
  5. Скачивание макетов в основных форматах: сервис позволяет скачивать JPG, PNG, PDF и PDF для печати;
  6. Совместное редактирование документов: подключение коллег или друзей вне зависимости от их местоположения;
  7. Организация работы в командах: объединяйте пользователей, которые видят и могут редактировать дизайны друг друга;
  8. Планировщик дизайнов в соцсетях: свяжите свои аккаунты в соцсетях с аккаунтом Canva для автоматической публикации;
  9. Создание сайтов-визиток и онлайн-презентаций: превращение дизайнов в сайты, доступные по ссылке.

Здорово, правда?! Но это только основной функционал сервиса. Далее я расскажу Вам о его возможностях, которые здорово упростят жизнь.

И особенно, если Вам некогда осваивать профессиональные графические редакторы.

Преимущества

Что именно отличает Canva от другого софта для графического дизайна и других онлайн-конструкторов изображений, разберем подробно в этой главе, приятного чтения.

1. Простота использования

Canva главным образом рассчитан на новичков в дизайне и тех, для кого создание контента – скорее побочная задача, а не основной вид деятельности.

Мастер Йода рекомендует:  Платформа для Интернета вещей EdgeX получила первый значимый релиз

Поэтому, предупреждаю сразу, что нарисовать что-то с нуля, как в Фотошопе, здесь не получится.

А вот быстро наложить фильтр на фотографию и превратить ее в красивый коллаж для stories Инстаграм или рекламную запись – вполне.

Кстати. Если Вы хотите запустить рекламу в Инстаграм, то читайте подробные инструкции по настройке в статьях.

Сами дизайны создаются по принципу drag&drop – конструирования изображения из готовых элементов.

Для начала стоит только пройтись по всем вкладкам: шаблоны, элементы, загрузки, текст, чтобы представлять, где искать нужную деталь. После этого можно начинать творить.

2. Широкий бесплатный функционал

Canva – не тот случай, когда бесплатная версия бесполезна. Да, премиум-аккаунт расширяет возможности, но функции, доступные обычным пользователям тоже впечатляют.

Например, после регистрации Вам открывается доступ к 8 000 бесплатных шаблонов графики – от визитных карточек и резюме до макетов email-рассылок и пригласительных на свадьбу.

Любой такой шаблон можно отредактировать: изменить текст, внешний вид, палитру цветов.

Также можно заменить исходные фотографии на собственные, добавить иконок или других декоративных деталей. И когда все готово – скачать дизайн в виде файла.

Лайфхак. Сервис Canva позволяет сохранять дизайн для дальнейшего использования. Эта функция пригодится Вам для создания контент-плана в Инстаграм. С помощью неё Вам будет проще сохранить единый стиль профиля.

Еще один плюс сервиса – это возможность публиковать картинку в виде онлайн-презентации или небольшого сайта-визитки.

Да, у такого сайта не будет собственного адреса и сложного функционала, зато на весь процесс создания публикации уйдет не больше получаса и ни одной строчки кода.

3. Возможность обойтись без дизайнера

Все шаблоны в каталоге созданы профессиональными дизайнерами – цветовая гамма подобрана к фотографиям, шрифты хорошо сочетаются, композиции не перегружены деталями.

Поэтому, если у Вас нет амбиций художника, вносить слишком много изменений в исходные образцы не придется.

Достаточно снабжать изображения своим логотипом, заменить текст и пару других деталей, чтобы изображение стало уникальным.

А это значит, что для ведения блога или оформления группы ВКонтакте можно вполне обойтись без сторонней помощи дизайнеров.

И не тратить время на описание задач, переписку, перечисление необходимых изменений и проверку.

Лайфхак. На сэкономленные деньги Вы можете запустить в инстаграме масслайкинг и массфолловинг. Для этого рекомендую сервис Zengram. По промокоду “INSCALEPROMO” Вы получите скидку 20% на всё.

4. Дизайны для любых целей

Каталог шаблонов Canva достаточно универсален, и в бесплатном доступе Вам предоставляются множество различных решений.

Предупреждаю сразу, если Вы пользуетесь поиском и сразу не нашли желаемого формата и тематики, то попробуйте использовать другие ключевые слова.

Например, “коллаж” здесь обозначен как “фотоколлаж”, что не совсем очевидно, поэтому придется поискать.

В остальном же здесь можно найти форматы практически на любой случай. Перечислять все варианты не буду, так как их очень много. Приведу лишь несколько примеров:

  1. Для предложений клиентам – многостраничные шаблоны презентаций;
  2. Для создания печатной продукции – буклеты, флаеры и сертификаты;
  3. Для производства сувениров – календари или открытки;
  4. Для организации мероприятий – программки, билеты;
  5. Для публикации в соц.сетях – шаблоны записи.

И это далеко не весь список. Так что советую Вам зайти на сервис и убедиться в его возможностях собственными глазами (ссылка в начале статьи). А мы едем дальше.

5. Доступ с любых компьютеров и устройств

Сервис Canva существует не только в виде веб-сайта, но и в виде мобильных приложений для iOS и Android.

При этом черновики и готовые изображения, созданные под одним аккаунтом, синхронизируются между устройствами.

Это позволяет начать дизайн на рабочем месте, а завершить работу по дороге домой с телефона или с любого другого пк.

Удобно, правда? Например, Вы можете создавать красивые публикации в инстаграм прямо с телефона, при этом не скачивая десятки различных приложений (одно – для фильтров, другое – для текста и т.д).

Полезно. Если Вы заинтересованы в продвижении аккаунта, то читайте нашу статью

Еще один плюс канвы в том, что она освобождает от привязки к одному устройству.

То есть Вам не нужно каждый раз скачивать и устанавливать софт на компьютер, Вы просто заходите на веб сайт канвы и продолжаете работу.

Недостатки

К каким ограничениям нужно быть готовым тем, кто решит попробовать Canva для дизайна графики? Перечислим несколько основных “минусов” этого решения.

1. Не все шрифты работают с русским языком

Часто происходит следующая ситуация, в исходном шаблоне шрифты красиво сочетаются друг с другом, а при попытке заменить текст на русский, редактор выдает пустые квадраты вместо букв. Это значит, что данный шрифт не поддерживает русского алфавита.

Поэтому рекомендую сразу смотреть категорию “Русские шрифты” в выпадающем списке, чтобы не разочароваться от появившихся квадратиков. Шрифтов, конечно, не так много, но выбор все же есть.

2. В бесплатной версии нельзя менять размер картинки

Стоит с самого начала определиться, какого размера и формата изображение Вам понадобится, поскольку быстро изменить его размер “на ходу” не получится. Но если Вы хотите избавиться от этого недостатка, то подключайте премиум-версию.

Как вариант – всегда можно создать макет с собственными размерами, и скопировать-вставить элементы из начатого черновика в новый.

В таком случае Вам понадобится время, чтобы заново расставить все детали в нужные места.


3. Требует хорошего “железа” и быстрого интернета

Для бесперебойной работы Вам понадобится быстрый компьютер или ноутбук с достаточным запасов оперативной памяти и стабильным интернет-соединением. Хоть канва не такой тяжелый редактор, но все же этого требует.

И предупреждаю сразу, что каждый шаг в редакторе автоматически ведет за собой сохранение изменений, поэтому сервис использует много трафика.

Хочу больше

С возможностями и ограничениями сервиса Вы ознакомились. И если Вам мало предложенных изображений или нужен более развернутый функционал, то существует и премиум-версии Canva for Work и Canva Корпоративная.

Для начала расскажу про тариф Canva for Work. Подключив его у Вас откроется ряд крутых возможностей, которые упростят Вам жизнь:

  1. Доступ к большему количеству премиум-изображений и фотографий;
  2. Возможность сохранять в аккаунте элементы своего бренда и фирменного стиля;
  3. Функция мгновенного изменения размера дизайна с адаптацией картинки к новым параметрам;
  4. Конвертация статичных изображений в GIF-анимацию или короткие видео.

Теперь немного про Canva Корпоративная. Об этом тарифе скажу только то, что он подходит для больших команд. Например, если Вас 35 человек и Вам нужны доступы к одному и тому же материалу.

Хотя, сказать честно, то канва и в бесплатной версии предоставляет огромные возможности.

Поэтому, платить срезу не советую. А для поиска изображений Вы можете пользоваться бесплатными стоками.

коротко о главном

Canva – простой и понятный графический редактор с большим набором функций.

И не обязательно покупать подписку, бесплатной версии вполне хватит для того, чтобы сделать красивую картинку.

Сервис станет незаменимым помощником в создании дизайна для разных задач и отлично подойдет для блогеров, вебмастеров, владельцев онлайн-магазинов и небольших компаний без штатного дизайнера.

Спасибо!

Наш менеджер свяжется с Вами в ближайшее время!

Что-то пошло не так

Попробуйте повторить попытку

«На данный момент мы делаем ребрендинг сайта и он станет активным в ближайшее время.

Но Вам же нужно увеличение продаж уже сейчас?! Поэтому заполните форму справа и мы свяжемся с Вами для презентация услуги.»

1. Общие положения

1.1. Политика в отношении обработки персональных данных (далее — Политика) направлена на защиту прав и свобод физических лиц, персональные данные которых обрабатывает ИП Жестков Н. В. (далее — Оператор).
1.2. Политика разработана в соответствии с п. 2 ч. 1 ст. 18.1 Федерального закона от 27 июля 2006 г. № 152-ФЗ «О персональных данных» (далее — ФЗ О персональных данных»).
1.3. Политика содержит сведения, подлежащие раскрытию в соответствии с ч. 1 ст. 14 ФЗ «Оперсональных данных», и является общедоступным документом.

2. Сведения об операторе

2.1. Оператор ведет свою деятельность по адресу 664009, г. Иркутск, ул. Ядринцева, 1/9, 70.
2.2. Руководитель Жестков Никита Владимирович (телефон +7 (964) 111-8758) назначен ответственным за организацию обработки персональных данных.
2.3. База данных информации, содержащей персональные данные граждан РоссийскойФедерации, находится по адресу: mailigen.ru, in-scale.bitrix24.ru, mail.yandex.ru, in-scale.ru, vk.com, facebook.com, manychat.com.

3. Сведения об обработке персональных данных

3.1. Оператор обрабатывает персональные данные на законной и справедливой основе для выполнения возложенных законодательством функций, полномочий и обязанностей, осуществления прав и законных интересов Оператора, работников Оператора и третьих лиц.
3.2. Оператор получает персональные данные непосредственно у субъектов персональных данных.
3.3. Оператор обрабатывает персональные данные автоматизированным и не автоматизированным способами, с использованием средств вычислительной техники и без использования таких средств.
3.4. Действия по обработке персональных данных включают сбор, запись, систематизацию,накопление, хранение, уточнение (обновление, изменение), извлечение, использование,передачу (распространение, предоставление, доступ), обезличивание, блокирование,удаление и уничтожение.
3.5. Базы данных информации, содержащей персональные данные граждан РоссийскойФедерации, находятся на территории Российской Федерации.

4. Обработка персональных данных клиентов

4.1. Оператор обрабатывает персональные данные клиентов в рамках правоотношений сОператором, урегулированных частью второй Гражданского Кодекса Российской Федерацииот 26 января 1996 г. № 14-ФЗ, (далее — клиентов).
4.2. Оператор обрабатывает персональные данные клиентов в целях соблюдения норм законодательства РФ, а также с целью:
— заключать и выполнять обязательства по договорам с клиентами;
— осуществлять виды деятельности, предусмотренные учредительными документами ИПЖестков Н. В.;
— информировать о новых продуктах, специальных акциях и предложениях;
— информировать о новых статьях, видео и мероприятиях;
— выявлять потребность в продуктах;
— определять уровень удовлетворённости работы.
4.3. Оператор обрабатывает персональные данные клиентов с их согласия,предоставляемого на срок действия заключенных с ними договоров. В случаях,предусмотренных ФЗ «О персональных данных», согласие предоставляется в письменном виде. В иных случаях согласие считается полученным при заключении договора или при совершении конклюдентных действий.
4.4. Оператор обрабатывает персональные данные клиентов в течение сроков действия заключенных с ними договоров. Оператор может обрабатывать персональные данные клиентов после окончания сроков действия заключенных с ними договоров в течение срока,установленного п. 5 ч. 3 ст. 24 части первой НК РФ, ч. 1 ст. 29 ФЗ «О бухгалтерском учёте» и иными нормативными правовыми актами.
4.5. Оператор обрабатывает следующие персональные данные клиентов:
— Фамилия, имя, отчество;
— Тип, серия и номер документа, удостоверяющего личность;
— Дата выдачи документа, удостоверяющего личность, и информация о выдавшем его органе;
— Год рождения;
— Месяц рождения;
— Дата рождения;
— Место рождения;
— Адрес;
— Номер контактного телефона;
— Адрес электронной почты;
— Идентификационный номер налогоплательщика;
— Номер страхового свидетельства государственного пенсионного страхования;
— Должность;
— Фотография.
4.6. Для достижения целей обработки персональных данных и с согласия клиентов Оператор предоставляет персональные данные или поручает их обработку следующим лицам:
— менеджер по продажам
— руководитель проекта
— менеджер проекта
— маркетолог

5. Сведения об обеспечении безопасности персональных данных

5.1. Оператор назначает ответственного за организацию обработки персональных данных для выполнения обязанностей, предусмотренных ФЗ «О персональных данных» и принятыми в соответствии с ним нормативными правовыми актами.
5.2. Оператор применяет комплекс правовых, организационных и технических мер по обеспечению безопасности персональных данных для обеспечения конфиденциальности персональных данных и их защиты от неправомерных действий:
— обеспечивает неограниченный доступ к Политике, копия которой размещена по адресу нахождения Оператора, а также может быть размещена на сайте Оператора (при его наличии);
— во исполнение Политики утверждает и приводит в действие документ «Положение об обработке персональных данных» (далее — Положение) и иные локальные акты;
— производит ознакомление работников с положениями законодательства о персональных данных, а также с Политикой и Положением;
— осуществляет допуск работников к персональным данным, обрабатываемым в информационной системе Оператора, а также к их материальным носителям только для выполнения трудовых обязанностей;
— устанавливает правила доступа к персональным данным, обрабатываемым в информационной системе Оператора, а также обеспечивает регистрацию и учёт всех действий с ними;
— производит оценку вреда, который может быть причинен субъектам персональных данных в случае нарушения ФЗ «О персональных данных»;
— производит определение угроз безопасности персональных данных при их обработке в информационной системе Оператора;
— применяет организационные и технические меры и использует средства защиты информации, необходимые для достижения установленного уровня защищенностиперсональных данных;
— осуществляет обнаружение фактов несанкционированного доступа к персональным данным и принимает меры по реагированию, включая восстановление персональныхданных, модифицированных или уничтоженных вследствие несанкционированного доступак ним;
— производит оценку эффективности принимаемых мер по обеспечению безопасностиперсональных данных до ввода в эксплуатацию информационной системы Оператора;
— осуществляет внутренний контроль соответствия обработки персональных данных ФЗ «Оперсональных данных», принятым в соответствии с ним нормативным правовым актам,требованиям к защите персональных данных, Политике, Положению и иным локальнымактам, включающий контроль за принимаемыми мерами по обеспечению безопасностиперсональных данных и их уровня защищенности при обработке в информационнойсистеме Оператора.

6. Права субъектов персональных данных

6.1. Субъект персональных данных имеет право:
— на получение персональных данных, относящихся к данному субъекту, и информации,касающейся их обработки;
— на уточнение, блокирование или уничтожение его персональных данных в случае, еслиони являются неполными, устаревшими, неточными, незаконно полученными или неявляются необходимыми для заявленной цели обработки;
— на отзыв данного им согласия на обработку персональных данных;
— на защиту своих прав и законных интересов, в том числе на возмещение убытков икомпенсацию морального вреда в судебном порядке;
— на обжалование действий или бездействия Оператора в уполномоченный орган позащите прав субъектов персональных данных или в судебном порядке.
6.2. Для реализации своих прав и законных интересов субъекты персональных данныхимеют право обратиться к Оператору либо направить запрос лично или с помощьюпредставителя. Запрос должен содержать сведения, указанные в ч. 3 ст. 14 ФЗ «Оперсональных данных».

УТВЕРЖДАЮ
Н. В. Жестков
29.06.2020

Уважаемый пользователь. Любая информация, размещенная на сайте in-scale.ru, предназначена только для свободного изучения пользователями сайта. Администрация сайта прилагает все усилия для того, чтобы предоставить на этом сайте достоверную и полезную информацию, которая отвечает на вопросы пользователей сайта, но в то же время не исключает возникновения ошибок.

Ни при каких обстоятельствах Администрация Сайта in-scale.ru не несет ответственности за какой-либо прямой, непрямой, особый или иной косвенный ущерб в результате использования информации на этом сайте или на любом другом сайте, на который имеется гиперссылка с нашего cайта, возникновение зависимости, снижения продуктивности, увольнения или прерывания трудовой активности, а равно и отчисления из учебных учреждений, за любую упущенную выгоду, приостановку хозяйственной деятельности, потерю программ или данных в Ваших информационных системах или иным образом, возникшие в связи с доступом, использованием или невозможностью использования Сайта, Содержимого или какого-либо связанного интернет-сайта, или неработоспособностью, ошибкой, упущением, перебоем, дефектом, простоем в работе или задержкой в передаче, компьютерным вирусом или системным сбоем, даже если администрация будет явно поставлена в известность о возможности такого ущерба.

Вся информация предоставляется в исходном виде, без гарантий полноты или своевременности, и без иных, явно выраженных или подразумеваемых гарантий. Доступ к in-scale.ru, а также использование его содержимого осуществляется исключительно по вашему усмотрению и на ваш риск.

Сайт in-scale.ru — это проект, работающий без заключения каких-либо договорённостей или договоров между вами, пользователями данного сайта, администрацией, владельцами серверов, на которых он размещён, либо кем-то ещё, любым образом связанными с этим или родственными ему проектами, которые (договора) могут стать предметом прямых претензий.

Некоторые ссылки на in-scale.ru ведут к ресурсам, расположенным на сторонних сайтах. Данные ссылки размещены для удобства пользователей и не означают, что Администрация одобряет содержание других сайтов. Кроме этого, Администрация in-scale.ru не несет никакой ответственности за доступность этих ресурсов и за их контент. Это заявление относится ко всем ссылкам, представленным на in-scale.ru, и материалам всех веб-сайтов, доступных через баннеры и ссылки на веб-сайте по адресу in-scale.ru

В обязанности Администрации не входит контроль легальности передаваемой информации (любой, включая, но не ограничиваясь, информацией, передаваемой между пользователями, внутренней пересылки в виде различных ссылок, текстов или архивов), определение прав собственности или законности передачи, приема или использования этой информации.

In-scale.ru не гарантирует возможность приобретения или использования тех или иных товаров или услуг по ценам и/или на условиях, указываемых в рекламных блоках (текстах, баннерах).

Вы соглашаетесь с тем, что in-scale.ru не несет никакой ответственности за возможные последствия (включая любой ущерб), возникшие в результате каких-либо отношений с рекламодателями и продуктами с in-scale.ru

Администрация сайта in-scale.ru вправе отказать в доступе к сайту любому Пользователю, или группе Пользователей без объяснения причин своих действий и предварительного уведомления.

Администрация вправе изменять либо удалять ссылки на информацию, графические, звуковые и прочие данные, размещенные Пользователями на in-scale.ru, без предварительного уведомления и объяснения причин своих действий.

Любые торговые марки, знаки и названия товаров, служб и организаций, права на дизайн, авторские и смежные права, которые упоминаются, используются или цитируются на страницах in-scale.ru, принадлежат их законным владельцам и их использование здесь не дает вам право на любое другое использование. Если не указано иное, страницы in-scale.ru никак не связаны с правообладателями, и никто, кроме правообладателя, не может распоряжаться правами на использование материалов, защищенных авторским правом. Вы несете ответственность за использование этих и подобных материалов.

Пользователь соглашается с тем, что все возможные споры будут разрешаться по нормам российского права.

Бездействие со стороны Администрации в случае нарушения Пользователем либо группой Пользователей пользовательского соглашения не лишает Администрации права предпринять соответствующие действия в защиту интересов in-scale.ru позднее.

Все права на материалы, находящиеся на in-scale.ru, охраняются в соответствии с законодательством ЕС и РФ, в том числе, об авторском праве и смежных правах.

Если в соответствии с действующими законами какие-либо условия будут признаны недействительными, остальные условия остаются в полной силе.

Все высказывания и примеры на сайте in-scale.ru по поводу увеличения, получения доходов, прибылей или/и результатов, уже размещенные или которые будут размещены на ресурсе, — всего лишь предположения по поводу предстоящих или текущих заработков, доходов, результатов поэтому не являются гарантией их получения. Если предположительное Вы считаете гарантированными, то также берете на себя все риски по их неполучению.

Если указывается конкретная сумма заработка или конкретный результат у лица или лиц, которые занимаются бизнесом, то это не гарантирует лично Вам такого же дохода при организации аналогичного предпринимательства. Вы принимаете как факт, что можете не получить подобных сумм заработков или/и результатов.

Все вопросы, размещенные на данном сайте и связанные с получением доходов и прибылей, не могут приравниваться к средним величинам.

Не существует также гарантий, что чей-либо опыт, касающийся предпринимательской деятельности, заработков, доходов или/и результат, можно использовать как указание к действию, которое может дать желаемые финансовые результаты.

Вся наша продукция и услуги созданы с образовательной и ознакомительной целями.

Посетители нашего сайта, пользователи продукции или услуг опираются на свой опыт, здравый смысл и полностью рассчитывают на свои силы, принимая решение заниматься интернет-бизнесом или любым другим видом предпринимательской деятельности.


Администрация in-scale.ru в любое время вправе внести изменения в Правила, которые вступают в силу немедленно. Продолжение пользования сайтом после внесения изменений означает ваше автоматическое согласие на соблюдение новых правил.

Данный документ гласит о том, что вы даете свое согласие на то, что ИП “Жестков Н.В.”, команда ресурса in-scale и сам сайт in-scale.ru не несёт ответственность за ошибочно принятые Вами решения по поводу доходов, прибылей, способов ведения бизнеса, продукции тренинг-центра, предоставляемых услуг или других материалов, что размещаются на данном сайте: текстовой, аудио и видео информации.

Заполняя форму подписки на сайте in-scale.ru, Вы соглашаетесь с политикой конфиденциальности проекта, а также с другими положениями:

1. Подписчик дает бессрочное согласие на обработку всех персональных данных, предоставленных на домене in-scale.ru

2. Подписчик не возражает против получения e-mail, смс уведомлений информационного и рекламного характера о предстоящих акциях, изменениях на проекте, иных событиях с домена in-scale.ru или от сообществ vk.com/in_scale, facebook.com/inscalerus

3. Подписчик может отписаться от информационной рассылки проекта In-scale в любое время по своему желанию при помощи специальной гиперссылки, а также обратившись в службу поддержки по адресу info@in-scale.ru и попросив удалить его контакты адрес из нашей подписной базы.

После получения администрацией сайта in-scale.ru такой просьбы, e-mail адрес или аккаунт в социальных сетях будет удален из базы в течение 72 часов, кроме выходных и праздничных дней.

ИП “Жестков Н.В” гарантирует полный возврат средств за приобретенный цифровой продукт по первому требованию клиента.

Срок гарантийного периода для всех цифровых продуктов составляет 7 календарных дней с момента оплаты.

Для того, чтобы запросить возврат денежных средств за определенный продукт обратитесь на info@in-scale.ru . Все заявки рассматриваются в течении 72 часов, кроме выходных и праздничных дней.

Возврат денежных средств осуществляется путём перевода необходимой суммы на один из электронных кошельков (WebMoney, Яндекс.Деньги), либо на карту VISA/MASTERCARD в пределах России. Длительность транзакции – от 1 до 5-х банковских дней после отправки денег.

ВИДЕОУРОК №5. Canvas

Доступ к полному курсу с учебными материалами и тестированием на 30 дней за 9.99 USD

Что такое Canvas

Пример рисования линии на Canvas

Техника для рисования сложных фигур

Пример изменения стилей линий

Отображение изображений в Canvas

Примеры создания градиентов

Примеры трансформаций в Canvas

Примеры реализации рисования на странице

Рисование индикатора загрузки на Canvas

Создание анимации на Canvas

Полезные фреймворки для Canvas

Пройдите тестирование по данному уроку. У вас есть три попытки на урок

HTML5 и CSS3 Essential
Canvas

Количество вопросов: 5
Время на тестирование: 5 минут

Кандидат: <>
Дата сдачи: <>
Правильные ответы: <> из 5
Время, потраченное на тест: <>

Canvas, это специальный элемент который позволяет в HTML документе создавать растровую графику. На стороне клиента, с помощью java script кода мы можем рисовать различные примитивы, создавать какие то узоры, рисовать изображения и изменять эти изображения. Все это делают на стороне клиента. Для чего может пригодится canvas. Какие типы приложений мы можем создавать, используя canvas. Первое, мы можем создавать различные мультимедийные приложения, такие как браузерные игры, можем создавать бизнес приложения в которых определены интересные интерактивные элементы, с красивым оформлением. Можем создавать приложения, в которых происходит планирование чего либо. Можем создавать диаграммеры, позволяющие строить графики. Для того что бы увидеть весь перечень и возможные вариации использования canvas. Мы можем посетить такой сайт как canvasdemos. Здесь собрао очень много различных примеров использования canvas в играх, в приложениях различного назначения, приложениях для обучения. Можете пройтись по главному меню этого сайта и посмотреть приложения, которые написаны на canvas, игры, так же можете посмотреть tutorials. Рекомендую этот сайт просмотреть после завершения урока. Давайте продолжим рассматривать презентацию и разберем, что такое canvas, как он настраивается в HTML документе. Слайд 2, как мы уже сказали canvas это элемент, позволяющий создавать растровую графику, с помощью java script кода. Canvas из себя представляет прямоугольную область, если вы посмотрите на слайд, то увидите что начало координат canvas, этто левый верхний угол. Видите как у нас тут оси координат. По горихонтали х-координата, по вертикали у-координата. Если мы будем определять точку, рисовать линию. Если мы будем использовать некоторые из функций java script для рисования на канвасе. Мы будем всегда определять координаты точек, используя 2 целочисленных значения. Первое целочисленное значение будет определять координату х, второе координату у. Если мы создадим точку с координатой 4 и 3, то точка будет находится в этой координатной области canvas. Давайте посмотрим как canvas поддерживает на данный момент, как он поддерживается в браузерах. На слайде 3 вы видите скриншом сайта caniuse. И на этом скриншоте мы можем видеть, что canvas уже достаточно хорошо поддерживается браузерами, 84% браузеров имеют полную поддержку элемента. Единственное, IE8 который является еще достаточно популярным браузером, canvas не поддерживает полностью. По этому, для того что бы решить проблему с IE8 или ранней версии, нам необходимо имитировать поведение canvas, через подключение специального java script кода, дополнительных библиотек. Естественно, это не очень хорошее решение, потому что оно будет не такое производительное как использование родного canvas, которое встроенное в браузер. Если вы расчитываете, что ваше приложения будут использовать посетители, работающие с IE, то в таком случае вы должны в приложение добавить ссылку на специальную библиотеку, которая назвивается explorer canvas. Эту библиотеку вы можете скачать по ссылке, которую вы видите сейчас на слайде. Подключить эту библиотеку можно очень простым способом. Что бы она не работала в других браузерах, которые поддерживают canvas, вы можете подключить библиотеку через использование специального комментария в элементе head. В комментарии у нас установлено условие, если браузер который выполняет загрузку текущей страницы является IE версии ранее 9, то в таком случает этот элемент кода не должен читаться комментарием, он должен подключиться и IE8 и более ранней версии должен будет использовать библиотеку excanvas. По сути вот эта запись означает less than IE9. То есть если версия меньше 9, этот блок кода нужно использовать. Другой вариант подключения библиотеки excanvas, это использование modernizer. Вы помните что в первом уроке мы разбирали как можно, используя modernizer сделать проверку наличия поддержки некоторой функции HTML5 и подключить соответствующий java script код. Один из вариантов вы можете выбрать для того, что бы реализовать canvas даже в браузерах которые не поддерживают. Но это не очень хорошее решение, так как производительность будет на порядок хуже чем с использование настоящего канваса. Перед тем как смотреть следующие примеры, давайте посмотрим минимум кода, который нужно выполнить для того что бы начать работать с канвасом. Сам по себе канвас является обычный элементом разметки. Видите, сейчас на слайде маленьких блок кода, определяет элемент на странице с >

Теперь давайте посмотрим примеры, показывающие как вы можете рисовать в канвасе, с помощью java script кода. Сам по себе канвас является обычным элементом разметки. На 29 строке мы определиляем канвас, задаем ему атрибут id и вы видите что с помощью атрибутов height, width, style мы определяем размеры и оформление канвас элемента. Получается что канвас может быть настроен точно так же как и любой другой элемент разметки. Мы указали, что канвас будет являтся квадратной областью с размерами 300х300 пикселей и добавили для канваса серую рамочку, что бы его было видно. Так же обратите внимание, что в канвасе находится текст. Этот текст будет отображен пользователю, если браузер на понимает что такое канвас. если для браузера элемент является неизвестным, он будет воспринят как обычный div. А что делает браузер, если у него на странице находится div, показывает содержимое элемента. Соответственно содержимое, которое мы здесь видим, отобразится если браузер не поддерживает элемент канвас. Вы можете в этом блоке определить ссылки на последние версии браузера и сказать пользователю что для корректного просмотра текущей страницы, нужно скачать последнюю версию браузера. Далее что мы делаем. На строке 24 мы проверяем поддержку функции addeventlist в текущем браузере. Если она поддерживается, с ее помощью добавляем обработчик на событие load. В качестве обработчика у нас будет выступать событие draw, которое нарисует на канвасе простую линию. На строке 7 вы видите, что функция draw определена и в этой функции на 9 строчке мы проверяем поддерживается ли канвас браузером, для того что бы узнать можно ли выполнять функцию рисования или нет. Если браузер не поддерживает канвас, то пользователю уже отобразится сообщение, что браузер не поддерживает канвас. Нам теперь остается проверить, будет ли работать наш код. Если он не сработает, то просто не выполнять его. Мы берем с помощью библиотеки modernizer, проверяем наличие поддержки канвас, если канвас не поддерживается, мы выполняем возврат и функция прекращает работу, никакой код связанный с работой канваса у нас не выполнится. Если же браузер поддерживает работу с канвас элементом, то строка 12. Вначале мы находим дом эелемент по id canvas, то есть получаем ссылку на этот объект. И далее 13 строчка, мы получаем самую важную сущность, с помощью которой будет производится рисование на канвасе, для того что бы начать рисовать нам нужно получить контекст. Контекст получается с помощью вызова метода getcontext на объекте канвас. Так же при вызове getcontext, в качестве параметра мы передаем значение 2d. Что означает, что мы собираемся рисовать двумерную графику на канвасе. Мы получили контекст и теперь переходим к рисованию. Строка 16, мы вызываем функцию beginpath, которая указывает на то что мы сейчас начинаем рисовать определенную замкнутую фигуру. То есть определенную геометрическую фигуру. На 17 строке мы вызываем на контексте вторую функцию, функцию move to. Задача move to передвинуть виртуальный карандаш на указанные координаты. Если мы вызвали move to, это значит что мы передвигаем карандаш не проводя линию, то есть несем карандаш над полотном. Мы спозиционировали карандаш в координат 100 100. Теперь строка 18, на контексте вызывается метод line и передается значение 200 200, это значит что мы сейчас опускаем карандаш на полотно и ведем линию к точке 200 200. Получается от координаты 100 100 до 200 200 проводится черная линия толщиной в 1 пиксель. Мы можем продолжить так рисовать. Нарисовать достаточно сложную фигуру. Но для того что бы эта фигура стала видимая пользователю, нам необходимо завершить рисование, вызвав метод stroke на контексте. Если мы вызываем метод stroke, это значит, что то что мы нарисуем через методы move to, line to и другие методы которые мы будем смотреть, все это превратится в очертания, то есть мы просто нарисуем очертание той фигуры, которая была создана. Дальше мы увидим другие методы, позволяющие по другому отображать пользователю данные. Вы видите, мы достаточно большой написали блок кода. Все что делает это блок кода, это выводит линию по диагонали. Вот координаты 100 100, вот координаты 200 200. Вот линия которую мы прорисовали используя функцию stroke. Это все у нас canvas. Не очень впечатляюще, но если вы продолжите просмотр этого видео и продолжите изучение canvas, то сможете рисовать достаточно сложные и более интерактивные обьекты на canvas. В следующем примере мы посмотрим использование техники, позволяющей создавать достаточно сложные фигуры на канвасе. Фигуры которые состоят из большого количества точек и координат. Во всех примерах, которые мы будем сейчас разбирать у нас будет менятся та часть, которая находится после вызова метода getcontext. Мы получаем контекс и дальше у нас идут изменения. Если вы рассмотрите следующие примеры, то увидите, что они имеют все одинаковую структуру. Вот мы можем в этом убедится. Такой же канвас как в предидущем примере и такой же блок java script кода. Единственное меняется его содержимое. Смотрим на троку 16, первое отличие от предидущего примера это вызов метода save на контексте. Метод save, перед тем как мы начинаем какие-то изменения. Когда мы вызываем метод save, это значит, что мы сохраняем текущее состояние контекста. Сохраняем текущую систему координат и текущее графическое состояние. Далее стркоа 19, мы на контексте вызываем метод translate. Этот метод говорит о том что мы должны перенести начало координат с текущей позиции на позицию 100 100. Вот представте себе, идет наш канвас, сейчас он представляет такую область. Начало координат находится вот здесь. Позиция 0 0. На строке 16, когда мы вызвали метод save, мы сохранили такое состояние канваса, как он сейчас определен. На строке 19, когда мы вызвали метод translate со значениями 100 100, мы сказали что хотим перенести начало координат на позицию 100 100. Теперь у нас канвас имеет начало координат вот здесь. Относительно старого канваса эта позиция 100 по х и 100 по у. Получается что сейчас если после выполнения трансформации translate мы начнем рисвоать линии, примитивы, они будут рисоваться с координаты 100 100. Вот на строке 20 мы вызываем метод begin path, вызываем move to и мы сейчас передвигаемся не на позицию 100 100, как в предидущем примере, а передвигаемся еа позицию 0 0. Так как у нас сейчас контекст канваса сместился, мы сейчас находимся по координате 100 100, если брать относительно старого канваса. Но вызывая метод move to 0 0, потому что мы работаем во втором прямоугольнике, в контексте который мы немного сместили. Строка 24, вызываем метод line to. Получается мы рисуем зеленую линию от 0 0 до 100 100. Строка 25 вызываем метод stroke, делаем очертания этой нарисованой линии. Далее на строке 28 мы вызываем контекст, это значит что мы возвращаем состояние контекста на последнее сохранение. А последнее сохраненное состояние было на 16 строке. Получается после вызова, эта красная рамочка исчезает, мы возвращаемся в свое изначальное положение, вот это вот положение, в котором мы были в самом начале. Для чего это используется. Представте что на строке 24 у вас не 1 раз вызывается line to, а несколько десятков раз. То есть вы рисуете из линий какую то сложную фигуру. И представте, ваша задача потом эту фигуру перенести на 10 пикселей влево или на 10 пикселей вправо. Вам придется Взять и все вызовы методов line to пересчитать, так что бы они использовали новые координаты. Если вы используете вот такой подход. Если вы используете перед рисованием фигуры функцию translate, а саму фигуру рисуете относительно начала координат, то перемещение нарисованой фигуры очень упростится. Смотрите, что я имею в виду.

Если мы сейчас запускаем приложение, вот мы нарисовали нашу линию. Теперь мы хотим сделать так что бы эта линия сдвинулась например вправо, что бы мы на 10 пикселей ее подвинули вправо. Все что нам нужно сделать, это взять и поменять вызов функции translate. Мы указываем где будет наше начало координат и получается, что дальнейший код нам переписывать не приходится. Мы просто определяем, куда сместить начало координат перед рисованием. Смотрите что теперь получается. Фигурка у нас немножко сдвинулась вправо. Но при этом мы не линии перерисовываем, а просто смещаем начало координат. Следующие фигуры, которые будут рисоватся, они будут рисоватся относительно этого начала координат, потому что на строке 28 мы вызвали функцию restore. И восстановили контекст. Вот это такая полезная техника, которую мы используем когда рисуем сложные фигуры. В следующем примере мы посмотрим, как можнос создавать замкнутые геометрические фигуры. На строке 18, после того как мы получаем канвас, сохраняем и смещаем контекст на необходимую нам позицию, на строке 18 мы вызываем функцию beginpass и начинаем рисовать фигурку, которая будет из себя представлять квадрат. Мы двигаем вначале контекст на координаты 0 0, потом вызываем line to на 100 0, то есть делаем линию горизонтально вправо, потом 100 100, опускаем линию вертикально вниз. Потом 0 100, линию рисуем горизонтально в левую сторону и далее строка 25. Мы вызываем функцию context closepath. Это значит, то мы должны на 25 строчке провести линию, которая соединит нас с началом той линии, которая была вызвана на стркое 19. То есть мы сейчас на 25 строчке закрываем фигуру и автоматически соединяемся с начальной точкой, с которой мы начинали рисование. На 28 строчке вызывая функцию stroke, мы рисуем ту геометрическую фигуру, которую сейчас создали. Видите, нарисован квадрат. Еще раз, в чем преимущество функции translete, если было не понятно в предидущем примере. Представте, что этот квадрат нужно сдвинуть на 10 пикселей влево или вначало координат. Получается, что если у нас не будет функции translate, то менять придется все эти значения, что будет не очень удобно, придется переписать 4 точки, сменить 8 координат. А если мы имеем вызов функции translate, то все что нужно сделать дял внесения изменений, это поменять первоначальное значение. Вот небольшимы изменениями мы поменяли расположение квадрата на канвасе. В этом примере мы увидили использование функции closepath, которая автоматически замыкает фигуру, делая ее закрытой. В следующем примере мы посмотрим, как можно поменять стиль линий, которыми мы отображаем геометрическую фигуру. Смотрите, точно так же мы сохраняем контекст, делаем перемещение, рисуем геометическую фигуру. А теперь мы начинаем настраивать эту фигуру. Строка 27, мы указываем толщину линии, определяем толщину 8 пикселей. Далее указываем strokestile, указываем цвет линий, може указать цвет с помощью имени либо с помощью хекс значения. Все значения, которые вы можете использовать в css, для определения цветов, вы можете использовать так же и здесь для определения линии канваса. Строка 29, line join мы указываем как будут у нас выглядеть стыки линий, то есть на углах у нас линии должны быть закруглены. И вызывая функцию stroke, применяя эти настройки для рисования линий, мы создаем очертания нарисованной фигуры. Вот, в предидущем примере фигура была у нас серой, а сейчас она выводится зеленой и обратите внимание на углы. Видите они у нас закругленные, потому что это мы указали параметром round. В следующем примере мы посмотрим как прямоугольную область можно залить определенным цветом. То есть не просто сделать начертания, а именно сделать заливку квадрата. Точно так же, как и в предыдущем примере. Канвас, контекст, делаем то же самое что и до этого, но теперь на строке 27 перед тем как рисовать очертание фигуры, ы указываем что fillstyle, в контексте сейчас blue. Это значит, что если где нибудь ниже по коду, после задания этого свойства мы вызовем метод fill, это будет значит что нарисованная фигура должна быть заполнена синим цветом. Строка 31 мы определяем настройки для рамочки и смотрите как мы указываем цвет. Если в предидущем примере мы использовали имя для цвета, в этом примере примере мы используем функцию rgba и указываем интенсивности красного, зеленого и синего канала и альфа канала, который будет указывать прозрачность. Далее делаем определение, что углы должны быть закругленными и вызываем функцию stroke, делаем очертания фигуры. Посмотрите что получается. Вот нашквадрат, серая рамочка и синяя заливка. Момент, в который вы вызываете функцию stroke, достаточно важен. Если мы сейчас функцию fill вызовем после stroke, видите что у нас получится. Рамка наша не 8 пикселей в толщину, а 4. Потому что мы поверх рамки сделали заливку и соответсвтенно немножко захватили раму и она стала уже. Так как прямоугольные области приходится достаточно часто создавать, в контексте есть специальные методы для создания прямоугольников. Посмотрите на 6 пример, насколько он упростился по сравнению с предидущими. Хотя здесь мы тоже рисуем прямоугольники. После получения контекста, 14 строчка мы указываем что fillstyle, будет у нас синим то есть мы хотим сделать синую заливку и строка 15 мы вызываем метод fillrect. Мы указываем что собираемся синим цветом заполнить прямоугольную область. Начало прямоугольника это 100 100, а высота и ширина прямоугольника это 50 пикселей. Сейчас мы определили что в канвасе должен находится синий прямоугольник 50х50. 18 строчка, другой способ определения квадратов и прямоугольников, это использование метода strokerect. Те же самые параметры, начало координат и размер той прямоугольной области, которую мы должны уже не залить цветом, а сделать обводку. Мы указываем что толщина обводки будет 10 пикселей и цвет обводки будет красный. И последняя функция, которая позволяет работать спрямоугольниками, это clearrect. Но она делает противоположное действие относительно fillrect, эта функция очищает прямоугольную область. Мы тоже указываем точку, в которой будет начинаться прямоугольник и его ширину с высотой. Вот вы видите что получается. Видите, строка 15, fillrect вот наш синий прямоугольник, сверху по синему прямоугольнику была нарисована красная рамка, толщиной 10 пикслелей. А потом мы вырезали маленькаий кусочек из нашего прямоугольника. Вот методы, которые позволяют быстро создавать прямоугольную область в канвасе. С помощью функции clearrect, мы увидим в следующем примере, мы будем делать анимацию. Нарисовали какой нибудт элемент на экране, подождали несколько секунд, стерли его и нарисовали рядом, подождали, стерли его и так далее.

По этому метод clearrect будет использоваться в следующих примерах, когда мы дойдем до анимации. Перед тем, как переходить к следующим примерам, давайте вернемся к презентации и посмотрим несколько слайдов. Мы с вами остановились на 5 слайде. 6 слайд, это те функции, которые мы сейчас рассмотрели. Рассмотрите потому эту таблицу повторно, что бы отложить в памяти пройденный материал. Работа с прямоугольниками, функция которую только что мы рассмотрели. Сейчас мы подходим к теме, показывающей как можно создавать кривые. В канвасе есть несколько функций, которые позволяют нарисовать кривую. Сейчас мы с вами разберем 2 функции, это quadraticcurveto, beziercurveto. Когда мы определяем кривую, нам неоходимо задать либо 3 либо 4 точки, в соответствии с типом кривой, которую мы собираемся рисовать. Когда мы будем рисовать кривую, в любом случае контекст будет находится в определенной координате. Вот смотрите на слайде, представьте что мы передвинули контекст вот в эту координату. Далее для того что бы нарисовать вот такую кривую, нам необходимо вызвать функцию quadraticcurveto, которая относительно текущей нашей координаты, будет рисовать кривую в координату х, у. То есть вот в эти координаты, которые указаны и изгиб кривой будет контролироваться точкой, которая указана первым и вторым аргументом. Вот это контролирующая точка, если мы будем ее поднимать или опускать, то кривая будет пологая или более искривленная.Если мы хотим сделать кривую более сложную, то можем использовать функцию beziercurveto. В этой функции будут находится 2 контролирующие точки и соответственно мы можем перемещая эти точки, контролировать то как кривая будет у нас формироваться и отображаться пользователю. Вы можете почитать на википедии, что такое кривая bezier, посмотреть с какими формулами она расчитывается. Мы сейчас этого делать не будем, а просто посмотрим в примере, как с помощью кода можно такие кривые определить. Вначале мы разберем quadraticcuveto, потом beziercurveto. Как и в прошлых примерах, код у нас не меняется. После получения контекста мы делаем передвижение в точку 0 100 и из это точки мы хотим сделать линию в точку 100 100. И сделать так, что бы эта линия была изогнутая. Вот получается что на 16 строке мы указываем, что создаем кривую. Указываем что контрольная направляющая точка будет находится в координате 50 0 и куда мы будет линию вести, это координата 100 100. Линия у нас будет 3 пикселя в ширину, красного цвета и фактически рисуем мы эту линию на 20 строке. Давайте посмотрим результат. Видите как наша линия нарисовалась. Вот значение 0 100, точка которая мы создали на 14 строке. Вот значение 100 100, точка котору мы указали в 3-4 аргументе. А на 16 строке, управляющая точка находится в этой части канваса. Если мы хотим линию сделать не такой изогнутой, мы можем эту точку опустить и сделать значение не 50 0, а поставить точку где нибудь в этой облачти. Если мы хотим поствить управляющую точку сдесь, то линия у нас получится более пологой. Давайте сейчас посмотрим, сто произойдет если здесь поставим значени 50 50. Сохраним, вернемся в браузер и обновим браузер. Линия теперь не такая пологая. Чем ближе линия будет к нижней границе канвасе, тем меньше изгиб мы будем видить. Криваю почти превратилась в линию. Следующий пример показывает использование beziercurveto. На 14 строке 0 100, начальная координата. Проводить мы будем в координату 100 100. Управляющие точки в координате 10 10 и 90 10. Получается, что сечас первая управляющая точка находится гдето здесь, вторая где то здесь. Давайте посмотрим, сто получится если первую управляющую точку мы перенесем, например вот сюда. Давайте пропробуем сменить координату, допустим на 50 70. Сохранить, открыть браузер и обновить. Видите какая получилась у нас кривая. Вот получается , второй вариант рисования кривых используя эту функцию. В следующем примере мы посмотрим, как с помощью специальной функции отображать в канвасе изображение. Давайте запустим этот пример. В канвасе у нас отображается логотип HTML5. Это сделать очень просто. Для того что бы отобразить логотип, первое что нужно сделать это создать обьект image, дальше указать адрес и на 16 сроке определить что должно происходить, когда картинка будет загружена браузером. Видите что на событие unload мы вешаем обработчик и 17 строчка. Мы указываем что на контексте мы вызываем метод drawimage. Указываем картинку, которую собираемся рисовать и указываем где именно картинка будет нарисована. При этом мы не указываем размеры картинки и оставляем ее естественные размеры, которые были. Вприниципе этот код будет работать в большинстве браузеров, но желательно что бы вы немножно по другому определяли вывод изображений. Лучше определение адреса, по которому находится изображение переносить после того как у вас определяеться обработчик на событие unload. Потому что некоторые браузер ы могут некоректно отработать и изображение у вас так и не появится. Например старые версии фаерфокса не будут выводить изображение, если код определения значения src будет находится до определения функции unload. По этому лучше что бы именно так находился вывод изображения. Изображение выводится, но так у нас есть гарантия что мы не определили значения свойства src, у нас произошло событие unload. Браузер уже загрузил картинку, а только после того как картинка загрузилась, мы указали что нужно сделать после того как картинка загрузится. Получается, что эта операция не выполнитсяя, потому что картинка и так загрузилась. По этому лучше делать вот такое изменение, что бы гарантировать загрузку изображений. В следующем примере мы посмотрим как можно создавать патерн, как можно делать заливку определенной области канваса. На строке 13 мы сейчас создаем обьект image, потому что шаблон который мы будем рисовать на канвасе будет состоять из повторяющихся изображений. Вот мы получили картинку, указали что именно нужно будет использовать в качастве картинки, а далее когда картинка будет загружена, на строке 17 мы называем что будет использоваться для заполнения некоторой области. Указываем свойство fillstyle. Но если в предидущих свойствах fillstyle мы указывали цвет, то сейчас мы записываем специальный обьект. Который создается с помощью метода createpattern. В этот обьект передается картинка, которая должна будет использоваться и передается значение, которое вы использовали когда задавали фон для обычного HTML элемента. Repeat x, repeat y, для того что бы повторять изображение по горизонтали и вертикали. И далее на 18 строчке мы используем fillrect, что бы полностью заполнить весь канвас. Посмотрите как заполнится канвас.

Это изображение мы продублировали несколько раз, потому что указали значение repeat на 17 строчке. Давайте посмотрим что произойдет если мы укажем repeat x. Видите, только по оси х у нас происходит повторение изображений. В следующих примерах мы разберем, как с помощью контекста создавать градиенты. В первом примере мы посмотрим как создавать линейный градиент. Градиенты работают точно так же как и повторяющиеся узоры. На 14 строчке мы создаем переменную gradient, с помощью вызова метода createlineargradient. Настраиваем этот элемент, а потом в итоге этот обьект мы записывам в качестве fillstyle. Получается что вызов элемента для заполнения прямоугольника, использует настроенный нами градиент. Давайте детальнее посмотрим, как именно настраивается градиент. Первое, что значат цифры передающиееся в параметр метода. Мы сейчас создаем линейный градиент. Это значит что цвет будет распостранятся по вектору. Представьте что мы создаем градиент, из точки 0 0 из точки 0 300 у нас будет проходить линия. Куда этот вектор направляется, указывает вторая координата. Далее мы этот вектор хотим заполнить цветом. И для того что бы указать переходы цвета на протяжении этого вектора. Мы используем метод addcolorstop. Этот метод принимает 2 параметра, относительное значение гду будет использоваться ключ с определенным цветом и непосредственно сам цвет. Мы указываем что в значении 0 у нас будет находится синий цвет. Потом мы указываем что на средине линии будет использоваться свесло синий цвет. С позиции 1 будет находится цвет белый. Получается что браузер самостоятельно сделает расчет, как должен цвет от синего перейти в светло синий и от светло синего в белый. Давайте запустим пример, видите как произошел переход. Давайте попробуем добавит еще один градиент в позиции 0.3 и не синего цвета, а например красного. От синего к красному, от краснго к светло синему и от светло синего к белому. Градиент у нас был нарисован. В следующем примере мы увидим другой способ настройки градиента. На 14 строке мы создаем линейный радиент, который идет с координатой 100 100 в координату 200 200. Градиент использует 2 цвета. Вначале красный, вконце оранжевый. Градиент будет распостранятся по диагонали слева на право. На 19 строке мы используем градиент в качестве fillstyle контекста и 20 строчка рисуем прямоугольник с высотой и шириной 100 пикселей. Строка 22 мы создаем еще один линейный градиент, но при этом немножко по другому настраиваем colorstop. Мы используем функцию rgba, в которой передаем вначале цвет а потом значение прозрачности. Этот colorstop будет у нас черного цвета, но наполовину прозрачным. Следующий colorstop будет серого цвета и тоже наполовину прозрачным. Последний будет светло серый, но тоже наполовину прозрачный. На 30 строчке рисуем еще один прямоугольник. Обратите внимание что начало этого прямоугольника позиция 150 150. Получается что этот прямоугольник находится в средине предидущего прямоугольника. Благодаря тому, что у нас градиент полу прозрачный, мы будем видет как у нас идет просвечивание от второго прямоугольника. Посмотрите что получилось. Если мы возьмем и поменяем значение 0.5 на 1, прозрачность исчезнет. От черного в светло серому у нас будет простой градиент. В следубщем примере мы увидим как можно настроить радиальный градиент. Натройка радиального градиента отличается от настройки линейного градиента. Посмотрите на 14 строчку, когда вызывается метод createradialgradient, в этот метод нужно передать намного больше параметров. Что означают эти параметры. Первые 2 значения 150 150, это точка первого круга. Третье значение это радиус первого круга. Потом точка определяющая координату центра второго круга и радиус второго круга. Что б вам было понятнее давайте посмотрим вот с такой стороны на это определение. Вот наша точка 150х150, мы определили центр окружности. Значение 100, это радиус этой окружности. Вторая координата 150 150, тоже находится в этой точке и радиуз второй окружности у нас 200. Теперь когда мы будем настраивать колорстопы, у нас они будут настраиватся вдоль вектора, который идет от центра к внешнему краю окружности. Вот здесь у нас будет находится оранжевый цвет. От позиции 0 до 1 у нас будет происходить плавный переход от оранжевого к красному. А все что находится здесь, это все будет чисто красного цвета. Посмотрите что получается. Красный прямоугольнык, оранжевый центр и вот у нас идет плавный переход. Если мы позьмем и поставим значение первого радиуса не 100, а 10 то получается что переход у нас будет более плавным. Оранжевый цвет у нас заканчивается здесь и на протяжении оставшегося отрезка у нас идет плавный переход на красный. Если мы здесь напишем 190, то мы увидим очень резкий переход от оранжевого в красный. В следующих 4 примерах мы разберем трансформации, которые существуют в канвасе и начнем из самой простой трансформации, это трансформация translate. Все эти примеры будут построены таким образом, что бы мы могли поекспериментировать с трансформацией и посмотреть как она работает. Запусти первый пример. У нас есть координаты, которые мы можем менять, например координаты 10 50, нажимаем translate и зеленый квадрат рисуется по этим координатам. Пишем 150, квадрат перемещается вот в эту координату. Давайте еще раз разберем, как работает функция translate. Посмотрим под другим углом. На 38 строке мы определили канвас, в котором будет рисоваться прямоугольник. 40 строчка — блок, в котором будут находится элементы управления для координат канваса. У нас есть элемент input с айдишником х,у. Кнопка, нажатие по которой приведет к перемещению. Когда загружается документ, срабатывает loadhandler для того что бы проще было находить элементы на странице. Мы создаем для себя функцию $. На 13 строке мы создаем канвас и получаем контекст из этого канваса. Далее для кнопки создаем обработчик и первое, что мы делаем это 17 строчка. Полностью очищаем канвас. Удаляем все, что на канвасе было нарисовано. Для того чтобы очистить канвас, мы используем метод clearrect, который мы уже видели. Смотрите как мы определяем размеры канваса, мы указываем context.canvas.width. Получаеся что в самом контексте есть ссылка на канвас, для которого этот контекст был создан. А у канваса есть ширина и есь высота, которую мы используем для того что бы точно определить размер области. 19-20 строчка, мы читаем значения из полей ввода х, у. Сохраняем текущие координаты, вызываем функцию translate, перемещяем контекст в новые координаты, указываем контекст, рисуем зеленый прямоугольник и восстанавливаем контекст. Если мы еще раз нажмем на кнопку с новыми координатами, то получается что сначала мы очистим то что было нарисовано, а потом нарисуем новый квадрат. Если мы не будем вызывать метод clearrect, смотрите какой эффект у нас получится.

Нарисовали квадрат в координатах 0 0. Потом в координате 100 100. У нас старый квадрат не удаляется. Канвас навсегда запоминает те значения, которые мы использовали для того что бы его нарисовать. Что бы перерисовать какую то информацию, нам нужно ее затереть, а потом уже работать дальше. Для того что бы затереть данные, мы используем clearrect. Следующая трансформация — scale, позволяющая поменять масштаб элемента. Посмотрите как у нас выглядит разметка. Точно так же идет канвас и точно так же идут несколько элементов ввода. Теперь эти элементы ввода будут использоваться для определения масштаба. Наше изображение с размерми 1х1, в своем исходном размере мы вывели картинку. Если мы напишем 2 2, то увеличим картинку в 2 раза. Если напишем 1 2, то картинка будет искаженная, потому что по оси у мы увеличили, по оси х оставили исходный размер. Вот работа трансформации scale. Давайте посмотрим, как эту трансформацию мы применили. Точно так же создали функцию, получили контекст. Строка 15, создаем изображение и указываем адрес изображения и указываем, что при загрузке изображения нам нужно вызвать функцию draw. Эту же функцию нам нужно вызвать, когда мы нажмем кнопку. Что у нас будет происходить при нажатии по кнопке. Мы вначале очищаем все что есть в канвасе, получаем значени которые ввел пользователь в текстбоксы. Строка 30, после сохранения контекста мы используем вызов метода scale с координатами. После этого вызова, все что мы нарисуем, будет с тем масштабом который был указан в методе scale. Но все настройки сбросятся на изначальные, когда мы вызовем restore. После restore, если мы еще раз нарисум изображение, то рисоваться оно будет со своими реальными параметрами, которые находятся в настройках. Следующая трнсформация — rotate, вращение. Для того что бы указать трансформацию вращения мы используем функцию rotate, на 30 строчке. Вызываем эту функцию и передаем угол вращения. Давайте посмотрим как будет работать эта функция. Изображение, мы хотим вращать его по часовой стрелке. Угол поворота ставим 45 градусов. Нажимаем на функцию и фот наше изображение повернулось на 45 градусов. Когда мы исползуем функцию rotate, то передавать угол поворота нам нужно не в градусах, а в радианах. Для того что бы расчитать радианы, мы используем вот такую формулу, 24 строка. Мы значение записываем в переменную angle, а потом в эту же переменную записываем новые значение angle*Pi/180. Уже это полученое значение можно использовать для вращения. Нужно обязательно записывать радианы, для того что бы функция rotate работала. У нас неочень красиво произошло вращение, картинка вылезла за канвас. Если вы хотите, что бы вращение происходило в другой области. Нам нужно перед самой функцией rotate, выполнить трансформацию translate. Возьмем контекст, вызовем translate и перенесем изображение где нибудь ближе к центру канваса. Если мы сейчас скажем, что хотим повернуть изображение на 180 градусов. Функция поворачивает его относительно координаты 0 0. Следующая трансформация — transform. Посмотрите как мы ее выполняем. Мы сейчас получаем уже большое количество значений. 6 аргументво нам необходимо, для того что бы выполнить трансформацию. На строке 36 мы вызываем на контексте transform и передаем все значения, которые были получены от пользователя. Для того что бы понять, как эти значения работают и что они означают, давайте перейдем в презентацию и посмотрим на слайд. У нас есть желтая пунктирная рамочка, это исходное наше озображение. Если мы будем указываеть значение переменной a, это значение будет определять масштаб по оси х. Каждое значение определяет, как мы буждем смещать исходную картинку. Посмотрите на то что получится. Если мы запустим пример, посмотрите масштаб 1. Если мы поставим масштаб 2, то просто увеличим изображение вдоль оси х. Искривление по у мы ставим 1. Видите, как картинка поменялась. Перемещение по х поставим 1, картинка немножко сдвинулась. Поставим масштаб 0.5, произошли изиенения. С помощью такой трансформации, мы можем достигнуть эффекта трехмерных манипуляций. Можем сделать так, что бы казалось что мы вращаем изображение вдоль определенной оси. Вот представьте, что мы хотим это изображение сделать в виде карт для изометрической игры. По какому то нарисованному полю, из квадратиков сделать плоскую карту, что бы она была трехмерной. Что бы по ней можно было расставить юнитов и заставить этих юнитов двигаться. Представьте, что это у нас карта. Для того что бы эту карту сделать изометрической, мы можем использовать метод transform с такими вот значениями. Если мы сейчас запустим пример, такое ощущение что картинка в трехмерном пространстве. На этом мы закончили пример с трансформациями и у нас осталось еще 2 простых примера, показывающих как в канвасе рисовать текст и определять тени. В 18 примере на канвасе изобразим текстовое содержимое. После получения контекста мы отображаем линию и далее на строке 14 определяем для контекста, каким шрифтом мы будем пользоваться и настройками цвета. По сути определение шрифта происходит так же как и в настройках css стиля. Мы указываем, что шрифт у нас будет жирным, указываем его размер и указываем сам шрифт, его имя. Далее на 15 строке мы указываем как шрифт будет у нас отображатся в канвасе. Где будет базовая линия, по которой будет шрифт вводится. Возможные значения вы можете посмотреть в презентации. Вот у нас несколько есть возможных линий, по которым будет определяться, гду будет начинаться вывод шрифта. Смотрите как будет работать этот параметр. Далее строка 17, мы определяем какой текст будем выводить, создаем переменную и записываем ее значение. Для того, что бы правильно спозиционировать текст в канвасе, нам неплохо было бы знать сколько пикселей занимает. Для того что бы получитьв пикселях размер текста, можем на контексте вызвать метод measuretext. Передать в качестве параметра строковое значение и получить значения ширина текста в пикселях. Теперь строка 19, для того что бы вывести текстовое содержимое на канвас, мы используем функцию filltext. Первым параметром мы указываем какой тексти мы будем выводить, а вторым параметром мы указываем где именно текст будет отображаться. Вот мы указываем что текст будет выводится посредине. Мы взяли ширину канваса и отняли ширину текста. Поделили все это на 2, что бы ровно по центру вывести текст. 98, это значение по оси у, отступ верхней части канваса где текст будет выводится.

Посмотрите на результат, вот наш текст отобразился. Если мы поменяем alphabetic на middle и еще раз запустим пример, то вы увидите что текст вывелся посредине линии. В 19 примере мы посмотрим как можно в канвас дбавить тень. Видите что 19 пример, это скопированный предидущий кода, единственное мы на строке 12 добавляем свойство shadowcolor. Указываем, какой цвет у нас будет для тени. Видите черный цвет с прозрачностью. Далее указываем отступ по оси х и у. Отступ относительно того элемента, который будет тень отбрасывать, того элемента который будет нарисован контекстом. И 15 строчка, мы указываем как эта тень будет размыта. Указываем значения, определяющие силу сглаживания краев. Когда мы контекстом будем создавать текст или рисовать другие элементы, эти элементы будут отбрасывать тень которая была настроена выше. Видите, текст который мы ввели, вот он оранжевым вывелся. За текстом есть тень. Суказанием отступа и указанием размытия. Давайте попобуем поставить значение размытия 10 и теперь тень у нас стала более мутной, более размазанной. Мы сейчас закончили первую папку. Рассмотрели основные операции, которые вы должны делать над канвасом. После прохождения этой части урока можете нарисовать простейшие примитивы, создать основные элементы растровой графики с помощью канваса. Теперь мы перейдем к второй части урока и рассмотрим несколько примеров использования канвас. В первом примере мы увидим, как с помощью канвас можно позволить пользователю рисовать на странице. Если мы будем водить мышью над поверхностью канваса, вы увидите что появляются очертания. Рисуется путь, по которому мы мышью провели. Как такой пример сделан в java script коде. Вначале давайте посмотрим как определен канвас. Видите, что на 43 строке созданный канвас ничем не отличается от обычного канваса. Обычние атрибуты, зато в текущем документе у нас есть java script код, который срабатывает на событие load, при этом на событие load мы запускаем функцию edit. Задача этой функции найти канвас, получить контекст для канваса и далее мы указываем, что для канвасе на событие mousemove, мы хотим запускать функцию mousemove handler. Событие mousemove будет неоднократно происходить, когда мышь двигается над поверхностью канваса. Вот мы событием mousemove handler будем проверять, где находится мышь и рисовать линию. Mousemove handler, сама функция обработчик определена на 19 строчке. Эта функция-обработчик принимает 1 аргумент. В этот аргумент будет попадать значение, которое передает нам браузер, обьект-событие. Как раз из этого обьекта мы будем вытаскивать информацию о изображении курсора в браузере.

Разные браузеры по разному именуют свойства, содержащие координаты курсора. По этому мы на строке делаем специальные условия, которые проверяют, какой именно браузер сейчас использует пользователь. Если в обьекте события e, находится свойство layer x, если такое свойство присутствует, это значит что пользователь зашел с браузера фаерфокс. На строке 24-25 мы заполняем значение свойств layer x layer y. Переменные х, у которые были созданы выше. Если это свойство не работает, то мы проверяем наличие свойства offset x. Если такое свойство существует инициализируем переменные. Потом, чтрока 31, если у нас переменная start не равна true, а изначально переманная false, то тогда мы указываем что начинаем путь. Указываем, что передвигаем позицию контекста на координаты х, у. Строка 34 указываем, что мы начали рисовать и переменной start присваиваем значение true. Получается, что в следующий раз, когда событие mousemovehandler будет происходить, у нас уже это условие не срабатывает, мы перепрыгиваем в блок else и начинаем рисовать линию к координате х,у. То есть мы от move to к line to начинаем рисовать много коротких линий, которые начинают получать очертания в канвасе. Получается, что у нас бесконечно рисуется линия. Мы даже не должны ничего нажимать, мы должны просто мышкой водить по поверхности канваса и это приведет к появлению очертаний, которые мы сделали курсором. В следующем примере мы посмотрим, как можно сделать такое же рисование, но только при нажатии на левую клавишу мыши. Видите, если мы мышью водим над поверхностью канваса, ничего не происходит. Когда мы зажимаем, то рисуем линию. Давайте смотреть, как это реализовано в следующем примере. Точно так же у нас есть канвас на странице. Точно так же мы вначале документа находим канвас, получаем контекст, но теперь у нас больше обработчиков. Мы создаем обработчик на движение мыши, обработчик на нажатие мыши и обработчик на событие mouse up, когда мы мышь отпускаем. Для того, что бы нам удобнее было работать в данной приложении, мы создаем функцию getCoords. Эта функция принимает обьект события и делая проверку, каким мы браузером пользуемся в итоге возвращает нам java script обьект, состоящий из 2-х свойств х и у. В этих свойствах у нас будут находится значения текущих координат мыши. Это вспомогательная функция, мы дальше будем ее использовать ниже в сценарии. Когда мы нажимаем левую клавишу мыши, на событии mouse down, у нас запускается функция обработчик downhandler. Эта функция у нас находится на 35 строке. Когда эта функция запускается, мы начинаем путь метод beginpath. Указываем, что перемещаем контекст на координаты по значению х и по свойству у. Мы вызываем здесь функцию, функция возвращает нам обьект с двумя свойствами и этот обьект мы используем. Берем значения нужных нам свойств. После этого мы указываем, что у нас началось рисование. Переменной start присваиваем значение true. Если переменной started присвоено значение true и мы начинаем мышью двигать по поверхности канваса, у нас запускается событие mousemove и срабатывает обработчим movehandler. В этом обработчике происходит то же самое, что и было в предидущем примере. Мы вызываем метод line to, передавая координаты мыши и вызываем метод stroke, для того что бы рисовать очертания. Если просто будет происходить событие mousemove, при этом клавиша не будет зажата, то тогда условие не срабатывает и движение мыши по поверхности канваса ни к чему не приводит. Если же мы после зажатия мыши отпускаем ее, то переменной started присваиваем значение false, это нужно для того что бы если значение было изменено на true, что бы потом мы могли остановить рисование. Вот такой небольшой пример, небольшие изменения, которые сделали наш мини web paint более похожим на настоящий pait. В следующем примере мы разберем интересную возможность, для сайта который базируется на основе канваса. Я думаю вы сталкивались с аякс приложениями. Видели, когда страница у вас начинает запрос к серверу, на странице появляется какое то вращающееся колесико, часики, которые указывают что в данный момент страница выполняет какую то обработку. Рисованиея во такого индикатора загрузки может быть сделано с помощью канваса. Вы можете использовать не стандартную gif анимацию, а канвас с какими то настройками. Посмотрите на то, как выглядит пример. Элемент который у нас показывает, что сейчас что то происходит. Этот элемент является обычным канвасом и с помощью специального java script обьекта у нас происходит рисование какой то анимации. Дополнительные примеры можно посмотреть вот по этой ссылке. Это сайт разработчика вот этого java script плагина. Видите сколько различных анимаций вы можете использовать. При этом вы можете создать свои анимации любого формата, цвета. Давайте кратко разберем, как работает этот плагин. Дополнительно, документацию по плагину вы можете посмотреть по второй ссылке. Простые моменты мы сейчас разберем. Строка 5, подключение этой библиотеки происходит по такому адресу. Можно скачать ее локально. Мы сейчас пользуемься библиотекой, которая доступна в вебе.

Далее стрoка 10, мы создаем переменную square, эту переменную мы инициализируем с помощью конструктора sonic. Эта функция как раз берется из библиотеки. Создавая эту функцию конструктор, мы передаем в нее обьект, состоящий из 4-х свойств. Высота и ширина элемента, который будет отрисован. Цвет заливки — белый и строка 17, свойство path где мы определяем массив элементов, указывающих как будет работать анимация. Мы указываем что у нас первая анимация, это линия которая из точки 10.10 напрявляется в точку 90.10. Когда эта линия будет отрисована, должна быть нарисованная вторая линия, которая с точки 90.10 рисуется в точку 90.90. Потом третяя линия, которая из этой точки идет в эту точку и четвертая линия. Мы указали из каких кусочков будет состоять наш loader. При этом вы можете в документации посмотреть другие возможные варианты. Здесь кроме линий можно рисовать арки, кривые. Можнос создать интересный путь по котором будет отрисовываться ваш лоадер. 25 строчка, мы вызываем функцию play, для того что бы loader начал отображаться и 24 строчка, добавляем его в текущий документ. Мы говорим что из этого обьекта мы извлекаем канвас. Этот канвас, как дочерний элемент у нас помещается в body. Нужно выделить отдельный элемент на странице, куда будет помещен канвас. Мы сейчас просто в body, как дочерний элемент добавили канвас. Последний пример, который мы разберем в уроке посвященному канвасу, пример показывающий как в канвасе создается анимация. Давайте мы запустим этот пример, что бы увидеть как у нас проигрывается. Анимация заключается в перемещении зеленого прямоугольника с левой стороны канваса в правую. Анимацию мы можем сделать различными функциями, но мы выбираем вот такой подход. Первое, что мы делаем. На стркое 25 мы определяем глобальную функцию requetsframe. Эта функция даст нам возможность независимо от браузера запросить выполнение отрисовки кадров анимации с наиболее подходящей частотой для текущего компьютера, на котором выполняется браузер. Когда мы вызываем функцию requestframe, эта функция делает вот такую сложную операцию. Создается переменная f и в эту переменную записывается window mostrewuestanimationframe. Если мы заходим с под браузера мазила, у нас эта функция будет присутствовать в обьекте window, мы ее запишем в переменную f. Если же этой функции нет, то мы будем использовать функцию requestanimationframe. Если этой функции не существует в браузере, мы будем использовать функцию webkitrequestanimatiomframe. Если же и этой функции нету, то тогда мы возьмем свою функцию, которая выполняет обычный вызов settimeout, передает в качестве параметра callback функцию и делает задержку на 500мс. Что выполняет каждая из этих функций. Впринципе все функции имеют одинаковое назначение. Ихняя задача попросить браузер, что бы при следующей адресовке, которую браузер планирует с определенной периодичностью, выполнить какой то наш участок кода. Когда мы хотим сделать анимацию, что бы анимация воспроизводилась максимально гладко и максимально подходила под производительность текущего компьютера, мы должны попросить у браузера, что ыб он планировал запуск анимации. Что бы сделать запуск анимации, допустим в мазила фаерфокс, мы должны выполнить такой вот кусочек кода. Вызвать функцию и сюда передать тот метод, который выполнится и адресовать новые кадры. По сути эта функция, которая лежит в качестве параметра, она у нас должна рисовать саму анимацию и мы должны с какой то периодичностю передавать функцию, которую браузер должен будет использовать для отрисовки новых кадров. Вот получается, что requestframe универсальная функция, позволяющая определить, каким мы пользуемся браузером и предоставить нам возможность, независимо от браузера, запланировать отрисовку нового кадра. Что у нас есть еще в этом примере, кроме функции запроса на отрисовку кадра. На строке 40 у нас есть функция drawrectangle, которая принимает обьект из свойствами и контекст. И пользуясь свойствами из обьекта, свойством х, у, w >

Например колесо фортуны. Мы можеш захватить это колесо мышкой и захватить его. Перемещать так, как нам захочется. Если мы посмотрим на исходный код, то мы увидим что это действительно канвас, но просто с помощью java script библиотеки реализовано отслеживание движения мышки, взаимодействия с пользователем. Кроме того, что вы учите материал этого урока, попробуйте создавать примитивные элементы с помощью java script кода. Когда вы совоите элементарные вещи работы с канвасом. Рекомендую вам сконцетрировать свое внимание на каком нибудь из java script фреймворков. В чистом виде работать с канвасом будет тяжело. На этом урок, посвященный работой с канвасом мы заканчиваем. В доп. материалах вы найдете домашнее задание и описание к текущему уроку. Спасибо за внимание, до новых встреч.

Урок — Основы использования Canvas

↑ HTML5 Canvas
Урок — Основы использования Canvas
Текущий урок — первый. Следующий урок →

Обзор

Спецификация HTML 5 включает множество новых функций, одной из которых является элемент .

HTML 5 Canvas (канва HTML 5) предоставляет простой и мощный способ вывода графики и рисования с использованием JavaScript.

Gecko поддерживает элемент с версии 1.8 (версия 1.5 браузера Firefox).

Presto поддерживает элемент с версии 9.0 веб-браузера Opera.

Internet Explorer 9 поддерживает элемент , начиная с Platform Preview 3. Ранее ситуацию с отсутствием в IE исправила компания Google, выпустившая расширение на JavaScript, под названием ExplorerCanvas.

На сегодняшний день чаще используется для построения графиков, простой анимации и игр в веб-браузерах. Группа WHATWG предлагает использовать как стандарт для создания графики в новых поколениях веб-приложений.

Организация Mozilla Foundation ведёт проект под названием Canvas 3D, целью которого является добавить низкоуровневую поддержку графических ускорителей для отображения трёхмерных изображений через HTML элемент .

Элемент Canvas. Создание Канвы.

Для каждого элемента canvas можно использовать контекст, в котором нужно вызвать команды JavaScript для рисования на Canvas. Браузеры могут реализовывать несколько контекстов элемента canvas и предоставлять различные API для рисования. Следует также помнить, что рисование происходит в растровой форме, то есть, нарисовав на канве какую-либо фигуру, её нельзя будет изменить или удалить отдельно, — можно только стереть целую область канвы.

Большинство современных браузеров предоставляют возможности 2D-контекста (2D Canvas) — Opera, Firefox, Konqueror и Safari. Кроме того существуют экспериментальные сборки браузера Opera, которые включают поддержку 3D-контекста (3D Canvas), а также дополнение к Firefox, которое реализует поддержку 3D Canvas.

Чтобы создать Canvas-контекст, достаточно просто добавить элемент в HTML-документ:

Нужно добавить идентификатор к элементу canvas, чтобы потом обратиться к нему в JavaScript, также необходимо задать атрибуты width и height для определения ширины и высоты элемента canvas.

Для рисования внутри элемента canvas, нужно использовать JavaScript. Сначала нужно найти созданный тег canvas с помощью функции getElementById(), а потом инициализировать нужный контекст. Как только это будет сделано, можно начинать рисование на канве, используя доступные API-команды выбранного контекста.


Следующий скрипт рисует простой прямоугольник на указанной канве:

РезультатОбновите браузер. Нарисовать Должно выглядеть так

Создание канвы на JavaScript.

Для создания канвы используются стандартные функция JavaScript createElement():

10 крутых примеров работы HTML5 Canvas

Холст — интересная особенность в HTML5 Canvas которая позволяет рисовать разнообразные вещи в браузере с помощью технологии Java. Например его можно использовать для управления фотографий, рисовать и анимировать разнообразные формы и фигуры, а так же воспроизводить видео. Но это ещё далеко не придел.

По этому, чтобы продемонстрировать на что возможна HTML5, тут представлена небольшая подборка различных и красивых примеров, которые точно Вам понравятся.

Радужный дождь

Действительно удачный пример анимации работающей на HTML5 Canvas, как будто с неба льёт радужный дождь. Очень красиво смотрится.

Частицы

Интересный эффект на HTML5 Canvas, который имитирует движение мелких частиц из букв, очень красивая и своеобразная анимация, которую можно использовать практически на любых сайтах.

Анимированные круги

Интересный и не сильно сложный эффект работающий на HTML5 Canvas. Тут несколько кругов, которые плавно меняют свою форму, таким образом получается красивый визуальный эффект.

Геометрическая анимация

Ну что сказать, это потрясающий и красивый эффект геометрической анимации на которую можно смотреть вечно, так как выгляди это очень здорово.

Анимационные шары

Плавно двигающиеся шары, замечательный пример который можно сделать на HTML5 Canvas. Этот эффект будет круто и современно смотреться на большинства сайтах.

Созвездие

Тут созданы случайно двигающиеся звёзды, а при наведении мыли они соединяются линиями. Очень красиво сделанное демо.

Молния

Отличная и удачная имитация молнии с помощью HTML5 Canvas. Смотрится очень достойно и потрясающе!

Радужный осьминог

Сделанные радужные линии из небольших кругом, движутся с плавной анимацией, таким не сложным образом получается такой красивый визуальный эффект.

Найди курсор

Этот пример отслеживает расположение курсора указывая на него стрелками

Механическая трава

Интересный пример, который реагирует на движения курсора, дорисовывая линии. Очень интересно и необычно придумано.

Начало работы с HTML canvas

HTML элемент – это мощное решение для создания пиксельной графики в Web c использованием JavaScript. Canvas позволит вам создавать замечательные визуальные эффекты – нужно только немного попрактиковаться.

В этом туториале мы создадим canvas объект, добавим к нему простые визуальные эффекты и анимируем их.

01. Создаём страницу

По своей сути Canvas – это HTML элемент, который располагается на странице и растягивается таким образом, чтобы полностью покрывать необходимую область, на которой вы будете рисовать объекты.

Начнем с создания простой страницы и canvas объекта.

02. Растягиваем canvas

Нам понадобится много пространства для работы, поэтому мы растянем наш canvas на весь экран. Мы также зададим для него черный фон, чтобы нам было проще работать и избавимся от отступов.

Этот CSS код должен помочь:

03. Активируем canvas

Следующее, что нам понадобится сделать – это добавить немного JavaScript кода, чтобы подготовить наш canvas к работе. Создадим DOMContentLoaded ивент, чтобы скрипт не пытался запуститься до того, как canvas элемент будет готов.

Мы также сделаем так, чтобы разрешение canvas элемента соответствовало области, которую он покрывает: иначе canvas будет менять свой размер без изменения разрешения, что приведет к размытости и видимым пикселям.

04. Рисуем форму

Вы, наверное, заметили, что в предыдущем шаге мы создали нечто под названием “context”. С его помощью происходит рисование в canvas. Проще всего представить context как рисовальную кисть, с помощью которой мы можем рисовать линии, дуги и базовые фигуры.

Сейчас мы можем пустить наш context в дело путем написания функции drawCircle, которая создаст дугу в 360 градусов – окружность, иными словами. Определим для context дугу (arc), зададим стили для границ и заливку, затем воспользуемся функциями fill() и stroke(), чтобы отрисовать формы (stroke рисует границы).

05. Создадим много окружностей

Отлично. Теперь у нас есть функция, которая рисует круги. Теперь немного дополним код из третьего шага, чтобы создать array, описывающий окружности. Он будет хранить координаты X и Y каждой окружности, цвет и расположение.

Мы создаем array вместо того, чтобы просто рисовать окружности, потому что это позволит нам анимировать круги путем повторения содержимого массива.

06. Добавляем случайные цвета

В предыдущем шаге мы использовали пару новых функций. Начнем с randomColour(). Это фукнция, которая возвращает рандомный цвет в формате HEX. Использовать ее достаточно просто.

07. Рисуем графику на странице

Теперь мы наконец готовы использовать функцию draw(). Эта функция очищает canvas с помощью функции clearRect() – она поможет избежать отрисовывания одних объектов поверх других, когда мы начнем анимировать наши круги. Затем она пройдет через array, который мы создали ранее, и отрисует каждый круг отдельно с помощью нашей drawCircle функции.

08. Анимируем формы

Если вы сейчас опробуете этот код, то увидите статичные круги, отрисованные на странице, но мы хотим сделать их анимированными. Дла этого мы дополним нашу draw() функцию. Прежде всего, мы используем значение circle.direction, которое находится в массиве, чтобы высчитать изменения в координатах X и Y наших кругов.

Затем мы используем встроенную функцию под названием requestAnimationFrame, которая рекурсивно вызывает вызывает функцию draw(). Эта функция позволяет браузеру решить, когда вызывать функцию снова, что позволит избежать добавления таймеров для вычисления времени, когда будет нарисован следующий кадр.

09. Отпрыгивание от краев страницы

Но еще не хватает одной вещи. Теперь круги просто исчезают за пределами экрана. Давайте сделаем так, чтобы они отпрыгивали обратно!

Для этого нам понадобится новая функция bounce(circle) внутри цикла функции draw(). Функция bounce определит, когда круг находится на краю экрана и отрегулирует направление движения.

Добавить комментарий