Введение в HTML5 Canvas
27 2012
Сегодня будем пробовать рисовать градиент на canvas'е в HTML5
Уверен, реализация полотна в HTML5 не имеет существенных отличий от реализаций в Delphi и C++Builder
Но согласитесь, простой градиент - не очень интересно, попробуем его разнообразить..
Когда я впервые услышал о html5 - первая из мыслей, что посетила меня, звучала примерно так:
"наверняка очередной стандарт языка разметки будет существенно сложнее своих предыдущих версий, структура страницы станет значительно сложнее и контроль соблюдения всех норм станет гораздо строже"
Но, как оказалось, главная цель html5 - облегчить работу разработчикам и заменить привычный "программистам-мазохистам" flash , тем самым избавив нас от извращений с интеграцией audio/video плееров и т.д.
Убедиться в этом можно посмотрев на структуру html5 страницы:
Первое, что бросается в глаза - объявление типа документа:
И это не сокращенная запись, а полноценное объявление типа документа html5!
теперь не нужно тратить время, чтоб определиться каким будет тип документа.
а их не мало:
- HTML 4.01
- HTML 4.01 Transitional
- XHTML 1.0
- XHTML 1.0 Transitional
- XHTML 1.1
- DHTML
Для уверенности тип документа html5 можно задать следующим образом:
Почему? Очевидно этого требует "всеми любимый" IE6
Самое прекрасное заключается в том, что html5 объединяет прелести всех типов web-документов.
Перейдем к Canvas:
Объявить его можно следующим способом:
Я выбрал разрешение 1024x480, т.к. это очень удобно на 15-дюймовом мониторе.
Определим стиль BODY, пусть фон будет темно-серым, а цвет текста светло-красным.
И сразу "прикрутим" функцию рисования к событию onload, пусть она называется loader():
Все что нам потребуется - двойной цикл с выводом 3-х квадратов и заменой цвета во внутреннем квадрате на каждой итерации:
И следующие методы:
fillStyle - тип/цвет заливки
fillRect(X, Y, WIDTH, HEIGHT)- заливка указанной прямоугольной области
Math.round - Округление чисел с плавающей запятой до целого числа
Градиент будет двойным: слева-направо и сверху вниз.
Объявляем необходимые переменные:
Выводим черные квадраты:
Результат: (картинки кликабельны)
Внутри черных рисуем синие:
И сам градиент:
Вот что получилось в итоге:
Исходник: