canvas(一)
坑军之王
226
起始点 | 结束点 |
moveTo(x1,y1); | lineTo(x2,y2) |
其中lineTo可以在结束路径之前有多个,以达到直线转弯的效果。使用如下:
var canvas = document.querySelector('#cont');
var sxw=canvas.getContext('2d');//获取画的能力
sxw.beginPath();
//直线(带转弯)
sxw.moveTo(10,10);
sxw.lineTo(20,20);
sxw.lineTo(20,30);
//
sxw.stroke();
sxw.closePath();
以下是我封装的一个画直线的方法和画虚线方法,可以复制后直接用:
//画直线
function drawLine(x1,y1,x2,y2,color){
sxw.beginPath();
sxw.moveTo(x1,y1);
sxw.lineTo(x2,y2);
sxw.strokeStyle = color || '#000';
sxw.stroke();
sxw.closePath();
}
//画虚线
/** 横向直线
* @param {Object} x1
* @param {Object} y1
* @param {Object} x2
* @param {Object} y2
* @param {Object} color
* @param {Object} width 线的宽度
* @param {Object} line 虚线有的长度
* @param {Object} space 虚线空格
*/
function drawNoLine(x1,y1,x2,y2,color,width,line,space){
//重复劳动用for循环
var lengthX=x2-x1;//30
lengthX = lengthX/(line+space);
for(let i=0;i<lengthX;i++){
drawLine(x1+i*line,y1,x1+space+i*line,y1,color,width);
}
}
//其中画虚线的功能是基于画直线上的
画矩形
画矩形是基于 XXRect()函数的,对其说明如下:
strokeRcet(x,y,w,h); //描边画矩形
fillRect(x,y,w,h);//填充画矩形
x:初始横坐标(基于canvas画布的)
y:初始纵坐标
w:矩形的宽
h:矩形的高
在这里对XX说明以下:无论是直线还是虚线、矩形还是接下来要说的圆、甚至包括文字,都分为stroke和fill两种着色方式,分别为描边和填充。
画圆
画圆是基于arc()函数实现的,以下对参数进行说明
arc(x,y,radius,startAngle,endAngle,counterClock)
x:圆心横坐标
y:圆心纵坐标
radius:圆的半径
startAngle:起始角度
endAngle:结束角度
counterClock:顺时针还(false)是逆时针 (true)
至于圆是实心还是空心的,看着色方式是stroke还是fill就是了
画图片
画图片基于drawIamge()函数,而其参数有三种方式,在下面将对三种参数组合方式进行说明:
drawImage(img,x,y)
/**
* img 图片的url
* x 图片的横坐标
* y 图片的纵坐标
**/
drawImage(img,x,y,width,height)
/**
* width:canvas画布中图片的宽度
* height:canvas画布中图片的高度
**/
drawImage(img,sx,sy,switth,sheight,x,y,width,height)
/**
* sx:剪切图片的x坐标
* sy:剪切图片的y坐标
* swidth:剪切图片的宽度(基于图片)
* sheight:剪切图片的高度(基于图片)
**/
以上三个代码都需要在以下环境中使用:
var img =new Image();
img.src=“url”;//此处决定绘制的图片
img.onload=function(){
上面说明的函数
}
写文字
写文字依托于XXText()函数,XX指的是着色防止,分别是stroke(描边、空心)和fill(填充、实心)
fillText(text,x,y,maxWidth) //实心文字
strokeText(text,x,y,maxWidth) //空心文字
text: 文字内容
x:文字初始横坐标
y:文字初始纵坐标
maxWidth:文字所占最大宽度
其中针对文字的样式还有以下属性:
font: 文本信息,主要用来决定文字的样式,包括文字大小、文字字体等属性
fillStyle:填充颜色,决定实心文字的样式,在画圆和矩形的操作时也决定他们的内填充色
strokeStyle:描边颜色,决定空心文字的描边颜色,在画圆和矩形的时候也决定他们的描边颜色
textAlign:文字对齐方式(横向),决定文字的横向对齐方式,有这些属性:start end left center right
textBaseline:文字对齐方式(纵向),决定文字的横向对齐方式,有这些属性: top bottom middle
清除画布
清除画布基于clarRect()函数,参数及说明如下:
clearRect(x,y,width,height);//动画效果必备
x:初始横坐标
y:初始纵坐标
width:矩形的宽
height:矩形的高
实际上效果就是绘制一个矩形的清除区域