====== HTML5 Canvas Шпаргалка ====== В этой шпаргалке кратко описан полный HTML5 Canvas API для 2D-контекста, основанный на спецификации W3C HTML5 Canvas. В нем также представлены методы обработки общих процедур. ===== HTML5 Canvas Element===== ==== Html5 canvas element ==== ==== Html5 canvas element with fallback content ==== your browser doesn't support canvas! ==== 2d context ==== var context = canvas.getContext('2d'); ==== Webgl context (3d) ==== var context = canvas.getContext('webgl'); ===== Фигуры ===== ==== Прямоугольник ==== context.rect(x, y, width, height); context.fill(); context.stroke(); ==== Сокращенный вывод, заполненного треугольника ==== context.fillRect(x, y, width, height); ==== Сокращенный вывод, не заполненного треугольника ==== context.strokeRect(x, y, width, height); ==== Круг ==== context.arc(x, y, radius, 0, Math.PI * 2); context.fill(); context.stroke(); ===== Стили ===== ==== Заполнение ==== context.fillStyle = 'red'; context.fill(); ==== Контур ==== context.strokeStyle = 'red'; context.stroke(); ==== Линейный градиент ==== var grd = context.createLinearGradient(x1, y1, x2, y2); grd.addColorStop(0, 'red'); grd.addColorStop(1, 'blue'); context.fillStyle = grd; context.fill(); ==== Радиальный градиент ==== var grd = context.createRadialGradient(x1, y1, radius1, x2, y2, radius2); grd.addColorStop(0, 'red'); grd.addColorStop(1, 'blue'); context.fillStyle = grd; context.fill(); ==== Pattern ==== var imageObj = new Image(); imageObj.onload = function() { var pattern = context.createPattern(imageObj, 'repeat'); context.fillStyle = pattern; context.fill(); }; imageObj.src = 'path/to/my/image.jpg'; ==== Соединение лини ==== context.lineJoin — свойство контекста 2D, которое определяет, как рисуется точка соединения двух линий. 1 **Оно может принимать следующие значения:** * miter — прямые соединения, которые образуют прямые углы (значение по умолчанию); 2 * round — закруглённые соединения; 2 * bevel — конические соединения. 2 * Синтаксис: context.lineJoin = 'miter', 'round' или 'bevel'. **Пример кода для установки разных значений:** * context.lineJoin = "miter" — рисуется треугольный угол соединения линий; * context.lineJoin = "bevel" — рисуется плоский (линейный) угол соединения линий; * context.lineJoin = "round" — рисуется круглый угол соединения линий. context.lineJoin = 'miter|round|bevel'; ==== Line Cap (стиль конца отрезка лини) ==== * butt (значение по умолчанию) — у линии будут плоские концы; 5 * round — у линии будут закруглённые концы, радиус закругления равен половине ширины линии; 1 * square — у линии будут квадратные концы. context.lineCap = 'butt|round|square'; ==== Shadow ==== context.shadowColor = 'black'; context.shadowBlur = 20; context.shadowOffsetX = 10; context.shadowOffsetY = 10; ==== Alpha (Opacity - Непрозрачность) ==== context.globalAlpha = 0.5; // between 0 and 1 ===== Цветовые форматы ===== ==== Строка ==== context.fillStyle = 'red'; ==== Hex Long ==== context.fillStyle = '#ff0000'; ==== Hex Short ==== context.fillStyle = '#f00'; ==== RGB ==== context.fillStyle = 'rgb(255,0,0)'; ==== RGBA ==== context.fillStyle = 'rgba(255,0,0,1)'; ===== Paths ===== ==== Begin Path ==== context.beginPath(); ==== Line ==== context.lineTo(x, y); ==== Arc ==== context.arc(x, y, radius, startAngle, endAngle, counterClockwise); ==== Quadratic curve ==== context.quadraticCurveTo(cx, cy, x, y); ==== Bezier curve ==== context.bezierCurveTo(cx1, cy1, cx2, cy2, x, y); ==== Close Path ==== context.closePath(); ===== Images ===== ==== Draw Image with default size ==== var imageObj = new Image(); imageObj.onload = function() { context.drawImage(imageObj, x, y); }; imageObj.src = 'path/to/my/image.jpg'; ==== Draw image and set size ==== var imageObj = new Image(); imageObj.onload = function() { context.drawImage(imageObj, x, y, width, height); }; imageObj.src = 'path/to/my/image.jpg'; ==== Crop image ==== var imageObj = new Image(); imageObj.onload = function() { context.drawImage(imageObj, sx, sy, sw, sh, dx, dy, dw, dh); }; imageObj.src = 'path/to/my/image.jpg'; ===== Text ===== ==== Fill Text ==== context.font = '40px Arial'; context.fillStyle = 'red'; context.fillText('Hello World!', x, y); ==== Stroke Text ==== context.font = '40pt Arial'; context.strokeStyle = 'red'; context.strokeText('Hello World!', x, y); ==== Bold Text ==== context.font = 'bold 40px Arial'; ==== Italic Text ==== context.font = 'italic 40px Arial'; ==== Text Align ==== context.textAlign = 'start|end|left|center|right'; ==== Text Baseline ==== context.textBaseline = 'top|hanging|middle|alphabetic|ideographic |bottom'; ==== Get Text Width ==== var width = context.measureText('Hello world').width; ===== Transforms ===== ==== Translate ==== context.translate(x, y); ==== Scale ==== context.scale(x, y); ==== Rotate ==== context.rotate(radians); ==== Flip Horizontally ==== context.scale(-1, 1); ==== Flip Vertically ==== context.scale(1, -1); ==== Custom Transform ==== context.transform(a, b, c, d ,e, f); ==== Set Transform ==== context.setTransform(a, b, c, d ,e, f); ==== Shear ==== context.transform(1, sy, sx, 1, 0, 0); ==== Reset ==== context.setTransform(1, 0, 0, 1, 0, 0); ===== State Stack ===== ==== Push State onto Stack ==== context.save(); ==== Pop State off of Stack ==== context.restore(); ===== Clipping ===== ==== Clip ==== // draw path here context.clip(); ===== Image Data ===== ==== Get Image Data ==== var imageData = context.getImageData(x, y, width, height); var data = imageData.data; ==== Loop Through Image Pixels ==== var imageData = context.getImageData(x, y, width, height); var data = imageData.data; var len = data.length; var i, red, green, blue, alpha; for(i = 0; i ==== Loop Through Image Pixels With Coordinates ==== var imageData = context.getImageData(x, y, width, height); var data = imageData.data; var x, y, red, green, blue, alpha; for(y = 0; y ==== Set Image Data ==== context.putImageData(imageData, x, y);