目录
var canvas = document.getElementById(canvasID)
vat ctx = canvas.getContext('2d')
ctx.strokeRect(300,100,200,50)
ctx.arc(x,y,radius,start,end,anticlockwise)
let linear = ctx.createLinearGradient(100,100,200,200)
ctx.drawImage(img,x0,y0,w0,y0,x1,y1,w1,h1)
canvas.toDataURL(type,encoderOptions)
ctx.getImageData(x,y,width,height)
ctx.putImageData(ImageData,x,y)
html节点转canvas转base64图片下载示例(html2canvas)
canvas使用
canvas标签的宽和高使用属性设置,用css的样式设置会导致画布失真。
获取画布
var canvas = document.getElementById(canvasID)
得到画布上下文,有两个分别为2d和3d的上下文,
vat ctx = canvas.getContext('2d')
选择2d的上下文,所有的图像绘制都是通过ctx属性或者事方法进行设置,和canvas标签没有关系了 。
绘制矩形
ctx.fillStyle = 'red'
设置下次填充内容的颜色为红色。注意要在绘制内容前设置颜色不然无法生效。
ctx.fillRect(100,100,200,50)
绘制填充矩形,前2个参数为x,y轴坐标,后2个参数为x、y轴方向的长度(x轴为水平向右,y轴垂直向下)。
ctx.strokeStyle = 'blue'
设置下次绘制线条颜色为蓝色。注意要在绘制内容前设置颜色不然无法生效。
ctx.strokeRect(300,100,200,50)
绘制矩形边框,前2个参数为x,y轴坐标,后2个参数为x、y轴方向的长度(x轴为水平向右,y轴垂直向下)。
清除屏幕内容(动画)
ctx.clearRect(0,0,600,600)
清除矩形范围内容,前2个参数为x,y轴坐标,后2个参数为x、y轴方向的长度。
像素化
使用canvas 绘制图片成功后就会像素化,无法从画布上再次得到这个图形(即无法修改画布内容,flash可以)。
注意canvas动画是通过清屏-更新-渲染的逻辑进行。
绘制不规则图形
每次设置完绘制的线条后需要调用ctx.stroke()绘制内容。
ctx.beginPath()
创建路径
ctx.moveTo(100,100)
设置起点坐标。
ctx.lineTo(200,200);
设置下一点坐标以及连接方式为直线。
ctx.closePath()
封闭路径,将最后一点坐标和起点坐标相连。注意用fill填充时,不写该条语句也会自动相连。
ctx.strokeStyle = 'yellow'
设置边框颜色
ctx.stroke()
通过线条绘制图形轮廓。
ctx.fillStyle = 'blue'
设置填充颜色。
ctx.fill()
通过填充路径的内容区域生成实心的图形。
绘制圆形
ctx.arc(x,y,radius,start,end,anticlockwise)
绘制圆弧,x、y为绘制圆弧的圆心;radius为半径 ;start为起始弧度(0表示x轴即水平向右);end为结束弧度(顺时针时,是按起始弧度转end-start弧度,即相差2π时绘制的是圆,逆时针旋转时,是从start弧度逆时针转到end弧度,且start、end弧度是按照顺时针的弧度,大于2π时%2π);anticlockwise为是否逆时针转,false为顺时针旋转;
// 圆点的中心坐标
var centerX = 50;
var centerY = 50;
// 圆点的半径
var radius = 5;
// 起始角度和结束角度设置为相同的值
// 使用2*Math.PI,因为我们只想画一个圆点,而不是整个圆
ctx.beginPath();
ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI);
ctx.fillStyle = 'red';
ctx.fill();
设置绘制属性(线条属性、虚线等)
ctx.globalAlpha = 0.1
设置线条的透明度,取值为0~1。
ctx.lineWidth = 1
设置线条的宽度,默认为1。
ctx.lineCap = ’round‘
设置线段末端结束方式,默认butt为方形结束,round为半圆型结束。
ctx.lineJoin = 'round'
设置线段连接处的样式,默认为miter为正常线性连接,round为连接处圆形,bevel为连接处底部为平的。
ctx.setLineDash([4,20,...,])
设置虚线,接受一个数组,数组第一位为实线长度,第二位为虚线长度即空白的长度,第三位为实线长度,以此类推,然后用数组的内容循环设置线段的虚实。

ctx.lineDashOffset = 4
设置起始的偏移量,如果设置为4,则上面从虚线即空白长度20开始。
绘制文字
ctx.font='30px 宋体'
设置字体大小和字体样式。
ctx.fillText(str,x,y)
绘制文字内容,x、y为绘制的起始坐标。
ctx.textAlign = 'center'
设置文本水平方向对齐方式,参数有start(默认)、end(文字都在起始坐标x轴左边)、center。
注意center表示基于起始坐标x轴居中,此时想让文本在整个canvas居中,设置fillText的x值为canvas的宽度一半即可。

本文详细介绍了HTML5 Canvas的基本用法,包括获取画布、绘制矩形、圆形、不规则图形、文字、颜色渐变、阴影效果、图片渲染及变形偏移等操作。同时,讲解了如何实现canvas动画和像素化效果,并展示了html节点转canvas并导出为base64图片的实现方法。此外,还涉及到html2canvas库的使用,用于将DOM转换为canvas并下载为图片。
最低0.47元/天 解锁文章
78

被折叠的 条评论
为什么被折叠?



