1.直线绘制及绘制折线图
2.矩形绘制及绘制渐变矩形
3.曲线绘制及绘制饼状图
绘制图片
<img src="img/1EF971FD.jpg" alt="">
let img=document.createElement('img');
img.src='img/1EF971FD.jpg';
document.body.append(img);
let image=new Image();
image.onload=function(){
console.log(this);
};
image.src="img/1EF971FD.jpg"
- drawImage() canvas图片绘制函数
- 三个参数drawImage(img,x,y)
- img 图片对象、canvas对象、video对象
- x,y 图片绘制的左上角
- 五个参数drawImage(img,x,y,w,h)
- img 图片对象、canvas对象、video对象
- x,y 图片绘制的左上角
- w,h 图片绘制尺寸设置(图片缩放,不是截取)
- 九个参数drawImage(img,x,y,w,h,x1,y1,w1,h1)
- img 图片对象、canvas对象、video对象
- x,y,w,h 图片中的一个矩形区域
- x1,y1,w1,h1 画布中的一个矩形区域
实例
- 绘制图片的方式1:三种参数形式
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121130845545.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1YTIyMg==,size_16,color_FFFFFF,t_70#pic_center)
let myCanvas=document.querySelector('canvas');
let ctx=myCanvas.getContext('2d');
let canvasW=ctx.canvas.width;
let canvasH=ctx.canvas.height;
for(let i=0;i<(canvasW/50);i++){
ctx.beginPath();
ctx.moveTo(0,i*50);
ctx.lineTo(canvasW,i*50);
ctx.strokeStyle="#ddd";
ctx.stroke();
}
for(let i=0;i<(canvasH/50);i++){
ctx.beginPath();
ctx.moveTo(i*50,0);
ctx.lineTo(i*50,canvasH);
ctx.strokeStyle="#ddd";
ctx.stroke();
}
let image=new Image();
image.onload=function () {
ctx.drawImage(this,20,20);
};
image.src="img/fengche.png";
- 绘制图片的方式2:五种参数形式
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121131347695.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1YTIyMg==,size_16,color_FFFFFF,t_70#pic_center)
ctx.drawImage(this,100,100,200,200);
- 绘制图片的方式3:九种参数形式
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121131536727.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1YTIyMg==,size_16,color_FFFFFF,t_70#pic_center)
ctx.drawImage(this,100,100,300,300,100,100,200,200)
- 绘制图片:在画布的中心位置绘制帧动画
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121132726106.gif#pic_center)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>canvas</title>
<style>
canvas{
border: 1px solid #cc6600;
margin: 100px auto;
}
</style>
</head>
<body>
<canvas width="600" height="600"></canvas>
<script>
let myCanvas=document.querySelector('canvas');
let ctx=myCanvas.getContext('2d');
let image=new Image();
image.onload=function () {
let canvasW=ctx.canvas.width;
let canvasH=ctx.canvas.height;
let x0=canvasW/2;
let y0=canvasH/2;
let imageW=this.width/4;
let imageH=this.height/4;
let index=0;
setInterval(function () {
ctx.clearRect(0,0,canvasW,canvasH);
ctx.drawImage(image,index*imageW,0,imageW,imageH,x0-imageW/2,y0-imageH/2,imageW,imageH);
index++;
if(index >=4){
index=0;
}
},200)
};
image.src="img/canvas/04.png";
</script>
</body>
</html>
- 绘制图片:实现用上下左右键操控动画的功能
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121133420760.gif#pic_center)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>canvas</title>
<style>
canvas {
border: 1px solid #cc6600;
}
</style>
</head>
<body>
<canvas width="600" height="600"></canvas>
<script>
let Character = function (ctx) {
this.ctx = ctx || document.querySelector('canvas').getContext('2d');
this.canvasWidth=this.ctx.canvas.width;
this.canvasHeight=this.ctx.canvas.height;
this.imgSrc="img/canvas/04.png";
this.stepSize=20;
this.stepY=0;
this.stepX=0;
this.direction=0;
this.init();
};
Character.prototype.init=function () {
let _this=this;
this.loadImg(function (image) {
_this.x0=_this.canvasWidth/2;
_this.y0=_this.canvasHeight/2;
_this.cW=image.width/4;
_this.cH=image.height/4;
_this.ctx.drawImage(image,0,0,_this.cW, _this.cH, _this.x0- _this.cW/2, _this.y0- _this.cH/2, _this.cW, _this.cH);
_this.index=0;
document.onkeydown=function (e) {
if(e.key==="ArrowUp"){
_this.direction=3;
_this.stepY--;
_this.drawImg(image);
}else if(e.key==="ArrowDown"){
_this.direction=0;
_this.stepY++;
_this.drawImg(image);
}else if(e.key==="ArrowLeft"){
_this.direction=1;
_this.stepX--;
_this.drawImg(image);
}else if(e.key==="ArrowRight"){
_this.direction=2;
_this.stepX++;
_this.drawImg(image);
}
}
})
};
Character.prototype.loadImg=function (callback) {
let image=new Image();
image.onload=function(){
callback && callback(image);
};
image.src=this.imgSrc;
};
Character.prototype.drawImg=function(image){
let cX=this.x0-this.cW/2+this.stepX*this.stepSize;
let cY=this.y0-this.cH/2+this.stepY*this.stepSize;
this.ctx.clearRect(0,0,this.canvasWidth,this.canvasHeight);
this.index++;
this.ctx.drawImage(image,this.index*this.cW,this.direction*this.cH,this.cW,this.cH,cX,cY,this.cW,this.cH);
if(this.index>=3){
this.index=0;
}
};
let character=new Character();
</script>
</body>
</html>