canvas的尺寸在内部设置,CSS里设置会被缩放;
lineWidth=10;描边宽度,以中间向两侧绘制;
绘制线段:
moveTo,lineTo,strokeStyle,stroke(),beginPath()
示例:
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.moveTo(0,0);
ctx.lineTo(150,50);
ctx.lineTo(20,100);
ctx.strokeStyle = "blue"; //设定描边颜色为蓝色
ctx.stroke();
ctx.beginPath(); //告诉canvas咱们要重新绘制一条全新的路径了,之前画的东西从此再无关系
ctx.moveTo(90,90);
ctx.lineTo(80,150);
ctx.strokeStyle = "red"; //设定描边颜色为红色
ctx.stroke();
</script>
strokeStyle的三种赋值方式:
(1)颜色值
(2)渐变
线性渐变:createLinearGradient(x1,y1,x2,y2)
径向渐变:createRadiaGradient(x1,y1,r1,x2,y2,r2)
addColorStop(位置,颜色)
示例:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.moveTo(0,0);
ctx.lineTo(150,50);
ctx.lineTo(20,100);
var grd = ctx.createLinearGradient(0,0,170,0); //定义线性渐变对象,设定渐变线起始点和结束点坐标,坐标格式为(起始点x,起始点y,结束点x,结束点y)
grd.addColorStop(0,"black"); //定义渐变线起点颜色
grd.addColorStop(0.5,"red"); //定义渐变线中间点的颜色
grd.addColorStop(1,"yellow"); //定义渐变线结束点的颜色
ctx.strokeStyle = grd; //将渐变对象赋值给strokeStyle
ctx.stroke(); //描边

(3)图案描边
示例:
<canvas id="myCanvas" width="200" height="200" style="border:solid 1px #CCC; margin:30px;">
您的浏览器不支持canvas,建议使用最新版的Chrome
</canvas>
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
pic = new Image(); //创建图片对象,或者 pic = document.createElement(‘img‘)
pic.src = "http://images.cnblogs.com/cnblogs_com/vajoy/558870/o_5.jpg";
pic.onload = patternFill; //在图片加载完成时执行绘图函数
function patternFill() { //定义绘图函数
var redTexture = ctx.createPattern(pic, "repeat");
ctx.strokeStyle = redTexture;
ctx.moveTo(80,10);
ctx.lineTo(10,90);
ctx.lineWidth = 8; //定义线段粗度为8像素
ctx.stroke();
}
</script>
线段属性:
⑴ lineCap是设定线段端点的形状(线帽),其值可以是
| butt 默认,即线条端点为平直的边缘 round 线条端点为圆角线帽 square 为线条端点添加正方形线帽 |

⑵ lineJoin则是设定折线的交接处的外角类型,其值可为:
|
miter 默认,折线交接处为尖角 round 折线交接处为圆角 bevel 折线交接处为斜角 |
绘制矩形:
ctx.fillRect(x, y, width, height) 和 ctx.strokeRect(x, y, width, height)
示例:
<canvas id="myCanvas" width="200" height="200" style="border:solid 1px #CCC;">
您的浏览器不支持canvas,建议使用最新版的Chrome
</canvas>
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d"); //获取该canvas的2D绘图环境对象
var grd = ctx.createRadialGradient(35,35,0,35,35,36); //定义放射状渐变对象,设定渐变线起始点和结束点坐标,坐标格式为(起始点x,起始点y,结束点x,结束点y)
grd.addColorStop(0,"yellow"); //定义渐变线起点颜色
grd.addColorStop(0.5,"blue"); //定义渐变线中间点的颜色
grd.addColorStop(1,"red"); //定义渐变线结束点的颜色
ctx.fillStyle = grd; //将放射状渐变对象赋值给fillStyle
ctx.fillRect(10,10,50,50); //从画布上的(10,10)坐标点为起始点,绘制一个宽高均为50px的实心矩形
ctx.beginPath(); //重置画笔,这是个好习惯
ctx.strokeStyle = "green"; //定义描边颜色为绿色
ctx.strokeRect(70,10,50,50); //从画布上的(70,10)坐标点为起始点,绘制一个宽高均为50px的描边矩形
</script>
示例:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d"); //获取该canvas的2D绘图环境对象
ctx.fillStyle = "blue";
ctx.fillRect(10,20,60,60);
//下面通过clearRect来擦除画布
ctx.clearRect(0,0,c.width,c.height);
//重新绘制一个矩形
ctx.fillRect(10,20,60,60);
这样可以保持之前定义的样式
用 ctx.closePath()闭合路径
示例:
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d"); //获取该canvas的2D绘图环境对象
//定义样式
ctx.fillStyle = "blue";
ctx.strokeStyle = "red";
ctx.lineWidth = "8";
ctx.lineJoin = "round";
//绘制多边形
ctx.moveTo(10,10);
ctx.lineTo(100,30);
ctx.lineTo(120,80);
ctx.lineTo(60,60);
ctx.lineTo(10,10);
ctx.closePath(); //闭合多边形路径
ctx.stroke(); //描边
ctx.fill(); //填充
原文:http://www.cnblogs.com/bolala/p/7456388.html