English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
<canvas> является новым элементом HTML5, который можно использовать для рисования изображений с помощью скриптов (обычно JavaScript). Его можно использовать для создания фотоальбомов или создания простых (и не очень простых) анимаций, а также для обработки и рендеринга видео в реальном времени.
Тег <canvas> определяет графику, такую как диаграммы и другие изображения, и для рисования графики вам необходимо использовать скрипты.
Нарисуйте на канвасе красный прямоугольник, градиентный прямоугольник, цветной прямоугольник и несколько цветных текстов.
Элемент <canvas> HTML5 используется для рисования графики, и это выполняется с помощью скриптов (обычно JavaScript).
Тег <canvas> является только контейнером для изображений, и вы должны использовать скрипты для рисования графики.
Вы можете использовать различные методы для рисования на канвасе: пути, прямоугольники, круги, символы и добавление изображений.
Числа в таблице указывают на первую версию браузера, поддерживающую элемент <canvas>.
Элемент | |||||
Описание | 4.0 | 9.0 | 2.0 | 3.1 | 9.0 |
На веб-странице один из канвасов представляет собой прямоугольную рамку, на которой можно рисовать с помощью элемента <canvas>.
注意: По умолчанию элемент <canvas> не имеет рамки и содержимого.
<canvas>Пример использования:</canvas>
<canvas id="myCanvas" width="200" height="100"></canvas>
注意: 标签通常需要指定一个id属性 (脚本中经常引用), width 和 height 属性定义的画布的大小。
提示:你可以在HTML页面中使用多个 <canvas> 元素。
使用 style 属性来添加边框:
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;"> </canvas> </script> </body></html>
canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Основной курс (oldtoolbag.com)</title> </head> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"> 您的浏览器不支持 HTML5 canvas 标签。 </canvas> <script> } var c = document.getElementById("myCanvas"); ctx.fillStyle="#FF0000"; ctx.fillRect(0,0,150,75); } </script> </body></html>
示例解析:
首先,找到 <canvas> 元素:
var c=document.getElementById("myCanvas");
然后,创建 context 对象:
var ctx=c.getContext("2d");
getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
下面的两行代码绘制一个红色的矩形:
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
设置fillStyle属性可以是CSS颜色,渐变,或图案。fillStyle 默认设置是#000000(黑色)。
fillRect(x,y,width,height方法定义了矩形当前的填充方式。
canvas 是一个二维网格。
canvas 的左上角坐标为 (0,0)
上面的 fillRect 方法拥有参数 (0,0,150,75)。
意思是:在画布上绘制 150x75 的矩形,从左上角开始 (0,0)。
坐标示例
如图所示,画布的 X 和 Y 坐标用于在画布上对绘画进行定位。鼠标移动的矩形框上,显示定位坐标。
Для рисования линии на canvase мы будем использовать следующие два метода:
moveTo(x,y- Определить начальные координаты линии
lineTo(x,y- Определить конечные координаты линии
Для рисования линии我们必须 использовать метод "ink", например stroke().
Определить начальные координаты (0,0) и конечные координаты (200,100). Затем использовать метод stroke() для рисования линии:
JavaScript:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Основной курс (oldtoolbag.com)</title> </head> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> Ваш браузер не поддерживает тег HTML5 canvas.</canvas> <script> } var c = document.getElementById("myCanvas"); ctx.moveTo(0,0); ctx.lineTo(200,100); ctx.stroke(); } </script> </body></html>
Для рисования круга на canvase мы будем использовать следующие методы:
arc(x,y,r,start,stop)
Фактически, при рисовании круга мы используем метод "ink", например stroke() или fill().
Использование метода arc() для рисования круга:
JavaScript:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Основной курс (oldtoolbag.com)</title> </head> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> Ваш браузер не поддерживает тег HTML5 canvas.</canvas> <script> } var c = document.getElementById("myCanvas"); ctx.beginPath(); ctx.arc(95,50,40,0,2*Math.PI); ctx.stroke(); } </script> </body></html>
При рисовании текста на canvase важно использовать следующие свойства и методы:
font - Определение шрифта
fillText(text,x,y- Нарисовать сплошной текст на canvas
strokeText(text,x,y- Нарисовать空心 текст на canvas
Использование fillText():
Нарисовать текст высотой 30px на canvase с использованием шрифта "Arial":
JavaScript:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Основной курс (oldtoolbag.com)</title> </head> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> Ваш браузер не поддерживает тег HTML5 canvas.</canvas> <script> } var c = document.getElementById("myCanvas"); ctx.font="30px Arial"; ctx.fillText("Hello World",10,50); } </script> </body></html>
Использование strokeText():
Нарисовать текст высотой 30px на canvase с использованием шрифта "Arial":
JavaScript:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Основной курс (oldtoolbag.com)</title> </head> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> Ваш браузер не поддерживает тег HTML5 canvas.</canvas> <script> } var c = document.getElementById("myCanvas"); ctx.font="30px Arial"; ctx.strokeText("Hello World",10,50); } </script> </body></html>
Градиент может заполнить прямоугольник,椭圆,直线, текст и т.д., различные формы могут определить различные цвета.
Существует два способа настройки градиента Canvas:
createLinearGradient(x,y,x1,y1- Создание линейного градиента
createRadialGradient(x,y,r,x1,y1,r1- Создание radial/円 gradient
При использовании объекта градиента необходимо использовать два или более цветов остановки.
Метод addColorStop() указывает на цветовую остановку, параметры описывают координаты, которые могут быть от 0 до 1.
Используйте градиент, установите значение fillStyle или strokeStyle Градиент, затем рисуйте фигуры, такие как прямоугольники, текст или прямую линию.
Используйте createLinearGradient():
Создайте линейный градиент. Используйте градиент для заливки прямоугольника:
JavaScript:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Основной курс (oldtoolbag.com)</title> </head> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> Ваш браузер не поддерживает тег HTML5 canvas.</canvas> <script> } var c = document.getElementById("myCanvas"); // Создать градиент var grd=ctx.createLinearGradient(0,0,200,0); grd.addColorStop(0,"red"); grd.addColorStop(1,"white"); // Заполнить градиентом ctx.fillStyle=grd; ctx.fillRect(10,10,150,80); } </script> </body></html>
Используйте createRadialGradient():
Создайте радиальную/круговую градиентную заливку. Используйте градиент для заливки прямоугольника:
JavaScript:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Основной курс (oldtoolbag.com)</title> </head> <body> <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> Ваш браузер не поддерживает тег HTML5 canvas.</canvas> <script> } var c = document.getElementById("myCanvas"); // Создать градиент var grd=ctx.createRadialGradient(75,50,5,90,60,100); grd.addColorStop(0,"red"); grd.addColorStop(1,"white"); // Заполнить градиентом ctx.fillStyle=grd; ctx.fillRect(10,10,150,80); } </script> </body></html>
Положите изображение на канвас, используя следующий метод:
drawImage(image,x,y)
Положите изображение на канвас:
JavaScript:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Основной курс (oldtoolbag.com)</title> </head> <body> <p>Изображение для использования:</p> <img id="scream" src="img_the_scream.jpg" alt="The Scream" width="220" height="277"><p>Canvas:</p> <canvas id="myCanvas" width="250" height="300" style="border:1px solid #d3d3d3;"> Ваш браузер не поддерживает тег HTML5 canvas.</canvas> <script> } var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); var img = document.getElementById("scream"); img.onload = function() { ctx.drawImage(img,10,10); } </script> </body></html>
Руководстве по HTML CanvasПолные свойства тега можно найти в
Тег HTML <canvas> | Тег |
Описание | <canvas> |