Вы здесь: Главная > Материалы на Русском языке > Дополнительные статьи > HTML5 - элемент CANVAS, рисование
Элемент HTML <canvas> используется для рисования графики на веб-странице.
Элемент HTML <canvas> - холст для рисования графики «на лету» с помощью сценариев (обычно JavaScript).
Элемент <canvas> - это только контейнер для графики. Для рисования внутри него нужно использовать скрипт. Текст внутри элемента canvas игнорируется, если браузер поддерживает элемент <canvas> HTML5. Если он не поддерживается, то текст будет отображаться браузером .
Canvas имеет несколько способов рисования путей, прямоугольников, кругов, текста и добавления изображений.
Для элемента <canvas> можно задать размеры, можно задать атрибут style. По-умолчанию его размеры: 300 на 150 пикселей (если они не заданы).
Создать canvas :
При рисовании нужно иметь в виду, что размеры рисуемых элементов - не абсолютные. Они - логические, зависят от размера canvas.
Одна точка рисуемого элемента соответствует отдному пикселю в том случае, если canvas имеет размеры по-умолчанию (300 на 150 пикселей). Если, например, задать для него размеры 600 на 150, то все горизонтальные размеры рисуемого объекта бутут увеличены в 2 раза.
Например, при рисовании на наком холсте прямоугольника размером 100 на 100, его изображение будет иметь размер 200 на 100.
Холст изначально пуст. Чтобы отобразить что-то, скрипт (JavaScript) сначала должен получить доступ к нему для рисования. Для этого элемент <canvas> имеет метод getContext (). Метод getContext () принимает один параметр, тип контекста. Для 2D-графики, например, указывается «2d», чтобы получить CanvasRenderingContext2D.
var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d");
По результату выполнения этих команд в переменной ctx находится ссылка на контекст для рисования, расположенный внутри canvas - элемента . Далее можно использовать все методы этого объекта.
ctx.fillStyle = "#FF0000";
ctx.fillStyle='rgba(0,255,0,0.5)';
ctx.fillRect(0,0,150,75);
Задать свойства линии
ctx.strokeStyle = "#0000ff";
ctx.lineWidth = 5;
ctx.strokeRect(10,10, 100,100);
Чтобы нарисовать прямую линию на холсте, используются следующие методы:
moveTo (x, y) - определяет начальную точку линии
lineTo (x, y) - определяет конечную точку линии
При рисовании дуги используются методы:
beginPath() - начинает путь
arc(x,y,r,startangle,endangle) - рисует дугу (координаты центра, радиус, угол начала дуги, угол конца дуги)
fillRect(x, y, width, height); - нарисовать залитый прямоугольник
strokeRect(x, y, width,height) - рисует контур прямоугольника, не заполняя его. Прямоугольник задаётся координатами левого верхнего угла (x, y), шириной и высотой.
clearRect(x, y, width, height) - стирает прямоугольник.
Стереть всё, очистить canvas
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.clearRect(0, 0, c.width, c.height);
Рисование кривой
Для рисования различных линий используются методы полученного контекста:
Пример:
context.quadraticCurveTo(cpx,cpy,x,y) - Метод quadraticCurveTo () добавляет точку к текущему пути, используя указанные контрольные точки, которые представляют квадратичную кривую Безье. Квадратичная кривая Безье требует двух точек. Первая точка - контрольная точка, которая используется в квадратичном вычислении Безье, а вторая точка - конечная точка кривой. Отправной точкой для кривой является последняя точка в текущем пути. Если путь не существует, используются методы beginPath () и moveTo () для определения начальной точки.
cpx Х-координата контрольной точки Безье
cpy Y-координата контрольной точки Безье
x Х-координата конечной точки
y У-координата конечной точки
Пример:
context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y) - добавляет точку к текущему пути, используя указанные контрольные точки, которые представляют собой кубическую кривую Безье. Кубическая кривая Безье требует трех точек. Первые две точки - это контрольные точки, которые используются в кубическом вычислении Безье, а последняя точка - конечная точка кривой. Отправной точкой для кривой является последняя точка в текущем пути. Если путь не существует, используются методы beginPath () и moveTo () для определения начальной точки.
cp1x Х-координата первой контрольной точки Безье
cp1y У-координата первой контрольной точки Безье
cp2x Х-координата второй контрольной точки Безье
cp2y Y-координата второй контрольной точки Безье
x Х-координата конечной точки
y У-координата конечной точки
| Свойство | Описание |
|---|---|
| fillStyle | Устанавливает или возвращает цвет, градиент или картинку, используемые для заполнения рисунка |
| strokeStyle | Устанавливает или возвращает цвет, градиент или шаблон, используемый для линии |
| shadowColor | Устанавливает или возвращает цвет, используемый для теней |
| shadowBlur | Устанавливает или возвращает уровень размытия для теней |
| shadowOffsetX | Устанавливает или возвращает горизонтальное расстояние тени от формы |
| shadowOffsetY | Устанавливает или возвращает вертикальное расстояние тени от формы |
| Описание | |
|---|---|
| createLinearGradient() | Создает линейный градиент |
| createPattern() | Повторяет указанный элемент в указанном направлении |
| createRadialGradient() | Создает радиальный / круговой градиент |
| addColorStop() | Определяет цвета и позиции остановки в градиентном объекте |
| Описание | |
|---|---|
| lineCap | Стиль окончания линии |
| lineJoin | Стиль пересечения линий |
| lineWidth | Толшина линии |
| miterLimit | Устанавливает или возвращает максимальную длину |
| Описание | |
|---|---|
| rect() | Создаёт прямоугольник |
| fillRect() | Рисует запоненный прямоугольник |
| strokeRect() | Рисует контурный прямоугольник |
| clearRect() | Удаляет прямоугольную область |
| Описание | |
|---|---|
| fill() | Fills the current drawing (path) |
| stroke() | Actually draws the path you have defined |
| beginPath() | Begins a path, or resets the current path |
| moveTo() | Moves the path to the specified point in the canvas, without creating a line |
| closePath() | Creates a path from the current point back to the starting point |
| lineTo() | Adds a new point and creates a line to that point from the last specified point in the canvas |
| clip() | Clips a region of any shape and size from the original canvas |
| quadraticCurveTo() | Creates a quadratic Bézier curve |
| bezierCurveTo() | Creates a cubic Bézier curve |
| arc() | Creates an arc/curve (used to create circles, or parts of circles) |
| arcTo() | Creates an arc/curve between two tangents |
| isPointInPath() | Returns true if the specified point is in the current path, otherwise false |
| Описание | |
|---|---|
| scale() | Scales the current drawing bigger or smaller |
| rotate() | Rotates the current drawing |
| translate() | Remaps the (0,0) position on the canvas |
| transform() | Replaces the current transformation matrix for the drawing |
| setTransform() | Resets the current transform to the identity matrix. Then runs transform() |
| Описание | |
|---|---|
| font | Sets or returns the current font properties for text content |
| textAlign | Sets or returns the current alignment for text content |
| textBaseline | Sets or returns the current text baseline used when drawing text |
| Описание | |
|---|---|
| fillText() | Draws "filled" text on the canvas |
| strokeText() | Draws text on the canvas (no fill) |
| measureText() | Returns an object that contains the width of the specified text |
| Описание | |
|---|---|
| drawImage() | Draws an image, canvas, or video onto the canvas |
| Описание | |
|---|---|
| width | Returns the width of an ImageData object |
| height | Returns the height of an ImageData object |
| data | Returns an object that contains image data of a specified ImageData object |
| Описание | |
|---|---|
| createImageData() | Creates a new, blank ImageData object |
| getImageData() | Returns an ImageData object that copies the pixel data for the specified rectangle on a canvas |
| putImageData() | Puts the image data (from a specified ImageData object) back onto the canvas |
| Описание | |
|---|---|
| globalAlpha | Sets or returns the current alpha or transparency value of the drawing |
| globalCompositeOperation | Sets or returns how a new image are drawn onto an existing image |
| Описание | |
|---|---|
| save() | Saves the state of the current context |
| restore() | Returns previously saved path state and attributes |
| createEvent() | |
| getContext() | |
| toDataURL() |
http://corehtml5canvas.com/code-live/
http://curran.github.io/HTML5Examples/
https://www.w3resource.com/html5-canvas/
https://www.sanwebe.com/2015/01/html5-canvas-examples
http://cssdeck.com/labs/image-nodes