# Canvas 2d



# 绘图上下文

获取 CanvasRenderingContext2D 上下文

let canvas = document.querySelector('canvas');
let ctx = canvas.getContext('2d');

canvas:返回 CanvasRenderingContext2D 对应的 canvas 元素

# 路径样式

# lineCap

描述:线条端点的样式
可能的值:
butt:默认值,左右两端都是矩形,且没有刚好等于距离
round:左右两端是以 1/2 线宽的半圆,超出绘制长度
square:左右两端是 1/2 线宽长度的矩形,且超出绘制长度

# lineJoin

描述:线条转角的样式
可能的值:
miter:默认值,转角是尖头
round:转角是圆头
bevel:转角是平头

lineWidth:线条宽度

drawFocusIfNeeded(element):让当前路径或指定路径轮廓高亮

getLineDash():获取当前虚线的样式

setLineDash(segments):设置虚线样式

lineDashOffset:虚线距离起点的偏移距离

miterLimit:用来显示 lineJoinmiter 时尖角的长度

# 绘制路径

beginPath():开始新的路径

closePath():闭合路径,将路径最后位置和起始点直线相连

moveTo(x, y):设置路径绘制的起始点

arcTo(x1, y1, x2, y2, radius):给路径添加圆弧

bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y):绘制贝塞尔曲线

quadraticCurveTo(cpx, cpy, x, y):绘制二次贝塞尔曲线

lineTo(x, y):用直线连接最后路径点和指定的点

arc(x, y, radius, startAngle, endAngle [, anticlockwise]):绘制圆弧路径

ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise):绘制椭圆路径

rect(x, y, width, height):绘制矩形路径

# 路径描边

strokeStyle:描边的样式

stroke():路径描边

strokeRect(x, y, width, height):矩形描边

strokeText(text, x, y [, maxWidth]):文本描边

# 填充

fillStyle:各种图形的填充样式

fill():路径填充

fillRect(x, y, width, height):矩形填充

fillText(text, x, y [, maxWidth]):文字填充

putImageData(imagedata, dx, dy):将 ImageData 对象的数据绘制到 canvas 上

drawImage(image, dx, dy):绘制图片

# 文本

font:文本绘制时的字号、字体

textAlign:绘制时,文本的对齐方式

textBaseline:绘制时,文本的对齐基线

measureText(text):获取文本的一些测量数据

# 图层合成

globalAlpha:画布全局透明度

globalCompositeOperation: canvas 图形的混合模式

# 阴影

shadowBlur:指定阴影的模糊程度

shadowColor:阴影的颜色

shadowOffsetX:阴影的水平偏移

shadowOffsetY:阴影的垂直偏移

# 上下文

restore():依次从栈顶弹出存储的 canvas 上下文

save():将当前 canvas 上下文 push 到栈中

# 坐标系

rotate(angle):旋转坐标系

scale(x, y):缩放坐标系

translate(x, y):平移坐标系

setTransform(a, b, c, d, e, f):重置当前坐标系,再进行变换

transform(a, b, c, d, e, f):在当前坐标系的基础上进行变换

# 创建对象

createImageData(wdith, height):创建一个空的 ImageData 对象

getImageData(sx, sy, sWidth, sHeight):返回一个包含 canvas 像素点信息的 ImageData 对象

createLinearGradient(x0, y0, x1, y1):创建渐变对象

createPattern(image, repetition):创建图案对象

createRadialGradient(x0, y0, r0, x1, y1, r1):创建径向渐变

# 判断

isPointInPath(x, y):检测某个点是否在路径内(包含)

isPointInStroke(x, y):检测某个点是否在路径上

# 重置

clearRect(x, y, width, height):将一块矩形区域还原到初始状态

clip():路径剪裁