<canvas>便签用于绘制图像,图表。不过,<canvas> 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本java script来完成实际的绘图任务。既然你要画出你想要的图案,你给有画布啊,总不能在空气中画画啊,所以第一步你要创建一个画布,给画布一个宽高能装下你的画。<canvas width="500" height="500" id="canvas"></canvas>。
canvas开始标签和结束便签可以填充内容,填充的内容是后备信息, 如果浏览器不支持canvas元素,就会显示这个后备信息。因为是js控制,所以在脚本语言获取这个元素。var Canvas = document.getElementById('canvas');画布创建好了,要在这个画布上绘图,就须取得绘图上下文。而取得绘图上下文的对象引用,需调用getContext()方法并传入上下文的名字,传入‘2d’,就可以取得2D上下文对象。在使用canvas之前,首先要检测getContext()方法是否存在。这一步非常重要。
if(canvas.getContext ){
var context = canvas.getContext("2d");
context . strokeStyle = "red";
context . fillStyle = "blue"
......
}
使用2D绘图上下文提供的方法,可以简单绘制2D图形,比如矩形,弧线,和路径 。2D上下文的坐标开始于canvas元素的左上角,原始坐标是(0,0)。所有坐标值都是基于这个原点计算。
var canvas = document.getElementById('canvas');
if (canvas.getContext) {
var context = canvas.getContext('2d');
context.fillStyle = 'red'; //绘制红色矩形
context.fillRect(100, 100, 100, 100);
context.fillStyle = 'rgba(0,0,255,0.5)'; //绘制半透明蓝色矩形
context.fillRect(150, 150, 100, 100);
}
clearRect()方法用于清除画布上的矩形区域,本质上,这个方法可以把绘制上下文中的某一矩形区域变透明。
canvas 线段样式
斜街长度:内角与外角的距离,当lineJoin是miter时,用于控制斜接部分的长度 miterLimit。如果斜街长度超过miterLimit的值,就会自动变成bevel 实际运算时大于limit * lineWidth / 2的值。
pen.lineWidth=15;
pen.moveTo(100,100);
pen.lineTo(300,100); //图片中最粗的那条线
pen.strokeStyle = 'red';
pen.stroke();
pen.lineWidth=5; //画笔由15改成5
pen.strokeStyle = 'yellow'; //颜色变黄色
pen.lineTo(200,200); //接着上面的点画。最末端点垂直坐高垂直于红色的那条
pen.moveTo(300,100) //改变起点
pen.lineTo(100,150);
pen.stroke();
pen.strokeStyle = 'black';
pen.lineWidth=1;
pen.lineTo(50,150);
pen.lineTo(50,450);
pen.stroke();
我们发现他们是一个路径的(就想是一个集合),也就是你改变笔的粗细和颜色会整体改变,但是因为画在上面的已经画上面的,并不会凭空消失。
那要怎么让他们不是同一个路径呢?用这个就可以了pen.beginPath(); 开始子路径一个新的集合 就可以设置颜色 和 粗细了 。
pen.aracTo(x1,y1,x2,y2,r); 从上一点开始绘制一条弧线(圆角)
绘制的弧线与当前点的x1,y1连线,x1,y1和x2,y2连线相切
画一个圆角矩形
pen.moveTo(120, 100);
pen.arcTo(200, 100, 200, 200, 20);
pen.arcTo(200, 200, 100, 200, 20);
pen.arcTo(100, 200, 100, 100, 20);
pen.arcTo(100, 100, 200, 100, 20);
pen.stroke();
canvas画贝塞尔曲线
pen.quadraticCurveTo(x1, y1, ex, ey); 二次贝塞尔曲线
x1 y1 控制点 ex ey结束