canvas详解

canvas标签用于图像的绘制的标签
示例:
创建了canvas标签并且设置高和宽

<canvas  id="canvas" width="800" height="400"></canvas>

注意 width和heigh也可以用过css设置

getContext()方法返回一个用于在画布上绘画的环境
目前参数只能传 2d
未来可能有3d

let cttx=canvas.getContext('2d');
//绘制元素都是基本返回的对象上进行绘制

Canvas坐标

左上角的0.0
在这里插入图片描述

绘制矩形

fillRect(x,y,width,height); //填充矩形
strokeRect(x,y,width,height) //绘制矩形边框
clearRect(x,y,width,height); //清除指定矩形区域
举栗:

	let canvas=document.getElementById("canvas");
    let ctx=canvas.getContext('2d');
    ctx.fillRect(5,5,100,100) //在x:5 y:5 画一个100*100的矩形

在这里插入图片描述

绘制路径

绘制路径有四个步骤: (类似ps钢笔)
1.创建起始点
2.画出路径
3.路径封闭
4.填充路径
这四个步骤并不是一定都要用 看自己需求
beginPath() 新建一条路径
closePath() 闭合路径
stroke() 通过线条来绘制轮廓
fill() 填充路径
moveTo(x,y) //线段起始位置
lineTo(x,y) //线段结束位置
绘制空心三角形

let canvas=document.getElementById("canvas");
    let ctx=canvas.getContext('2d');
    ctx.beginPath();
    ctx.moveTo(75,50);  //起始位置 相当于画画时的笔尖
    ctx.lineTo(100,25); //笔移动的位置
    ctx.lineTo(100,75); 
    ctx.lineTo(75,50) //此部可以由closePath()代替
    ctx.closePth();
    ctx.stroke();

在这里插入图片描述

绘制 圆弧

arc()方法
arc(x,y,radius,startAngle,endAngle,anticlockwise)
x,y 起始坐标
radius:圆的半径
startAngle:起始弧度
endAngle:结束弧度
anticlockwise:给定方向默认为 顺时针 false为顺时针 true 为逆时针
这里弧度:
弧度=(Math.Pi/180)*角度

画一个圆

 let canvas=document.getElementById("canvas");
    let ctx=canvas.getContext('2d');
    ctx.beginPath();
    ctx.arc(95,40,40,0,2*Math.PI);
    ctx.stroke();

绘制笑脸

let canvas=document.getElementById("canvas");
    let ctx=canvas.getContext('2d');
    ctx.beginPath();
    //画一个圆
    ctx.arc(75,75,50,0,2*Math.PI,false);
    //移动线的位置
    ctx.moveTo(110,75);
    ctx.arc(75,75,35,0,Math.PI,false);
    ctx.moveTo(65,65);
    ctx.arc(60,65,5,0,Math.PI*2,true);  // 左眼
    ctx.moveTo(95,65);
    ctx.arc(90,65,5,0,Math.PI*2,true);  // 右眼
    ctx.stroke();

在这里插入图片描述

二次贝塞尔曲线及三次贝塞尔曲线

quadraticCurveTo(cp1x,cp1y,1,x,y)
xy:为开始结束点
cp1x,cp1y为控制点
对于这些参数怎么填设计到数学问题
但是我们可以到浏览器中一步步调试

let canvas=document.getElementById("canvas");
    let ctx=canvas.getContext('2d');
    ctx.beginPath();
    ctx.moveTo(75,75);
    ctx.quadraticCurveTo(25,25,25,65.25)
    ctx.stroke();

在这里插入图片描述

颜色

fillStyle=color //填充颜色
strokeStyle=color //设置图像边框颜色
绘制一个三角形设置为橘黄色

let canvas=document.getElementById("canvas");
    let ctx=canvas.getContext('2d');
    ctx.beginPath();
    ctx.fillStyle="orange"
    ctx.moveTo(75,75);
    ctx.lineTo(100,100);
    ctx.lineTo(100,25);
    ctx.closePath();
    ctx.fill();

在这里插入图片描述

let canvas=document.getElementById("canvas");
    let ctx=canvas.getContext('2d');
    ctx.beginPath();
    ctx.strokeStyle="red"; //设置为红色
    ctx.moveTo(75,75);
    ctx.lineTo(100,100);
    ctx.stroke();

在这里插入图片描述

透明度Transparency

globalAlpha=[0-1]
设置图像的透明度
另外也可以用过rgba设置透明度
let ctx.fillStlye=rgba(255,255,255,0.2);

let canvas=document.getElementById("canvas");
    let ctx=canvas.getContext('2d');
    ctx.beginPath();
    ctx.fillStyle="orange"
    ctx.globalAlpha=0.2; //设置透明度
    ctx.moveTo(75,75);
    ctx.lineTo(100,100);
    ctx.lineTo(100,25);
    ctx.closePath();
    ctx.fill();

在这里插入图片描述

线条样式

lineWidth=value;
设置线条宽度
lineCap=type
type有:
butt
round
square
在这里插入图片描述
线条末端样式
lineJoin=type
线条与线条间接合处的样式

绘制图像

drawImage()在画布上绘制图像、或者视频
在画布上定位图像:
drawImage(img,x,y)

let canvas=document.getElementById("canvas");
    let ctx=canvas.getContext('2d');
    let img=new Image();
    img.src="img/bg.jpg";
    img.onload=function(){ //img.onload等图片加载完在画
        ctx.drawImage(img,0,0)
    }

在这里插入图片描述
在画布上定位图像并且规定图像的宽度和高度
drawImage(img,x,y,width,height);

ctx.drawImage(img,0,0,100,100)

在这里插入图片描述
设置图像并且剪切图像
drawImage(img,sx,sy,swidth,sheight,x,y,width,height)
img:使用的图片或者视频
sx:剪切的x坐标 可选
sy:剪切的y坐标 可选
swidth: 剪切宽度 可选
wheight: 剪切高度 可选
x: 图片x坐标
y:图片y坐标
width:

参数描述
img使用的图片或者视频
sx可选 剪切的x坐标
sy可选 剪切的y坐标
swidth可选 剪切的宽度
sheight可选 剪切的高度
x图片的x坐标
y图像的y坐标
width可选 图像的宽度
height可选 图像的高度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值