我们这期接上一期的html5,虽然有太多的不足;
在上一期中我们说到Canvas绘制图形,其中我们说到拿画笔,然后绘制了一个实心的方框,一个边框的空心的方框,一个有边框有内容的矩形,以及绘制直线,最后我们绘制了一棵松树,现在我们接着上次的说;
在学习html5中是不可避免的会遇到绘制圆形的;
现在我们来看下绘制圆形的代码:
arc(cx,cy,radius,start_angle,end_angle,direction);
cx 水平坐标
cy 垂直坐标
radius 圆心(半径)
start-angel 圆周起始位置
end_angle 弧长 Math.PI是半圆 Math.PI*2是整个圆 0.5为四分之一
direction 顺、逆时针 false为逆时针,true为顺时针(决定了圆弧的方向)
现在我们看了这个代码一定还是有很多不懂吧,现有我们来做一个例子:
body里的代码:
<canvas id="mycanvas" width="1000" height="600" style="border: 1px solid blue;"></canvas>
script里的代码:
var mycanvas =document.getElementById("mycanvas");----这里就是拿到画面
var ctx =mycanvas.getContext("2d");----这里就是拿到画笔
//等会以在的代码都会在上面这些代码的基础上
现在我们来画一个圆:
ctx.beginPath();--------开启路径的绘制,重置path为初始状态;
ctx.strokeStyle="green";-----这里是对圆的填充颜色
ctx.fillStyle="green";-----这里是对圆的线条颜色
ctx.arc(100,100,80,0*360*Math.PI/180,360*Math.PI/180,false);
ctx.stroke();
ctx.fill();
最后的图案如图:
但如果把绘制圆这句必变两个数,如下:
ctx.arc(100,100,80,0*180*Math.PI/180,180*Math.PI/180,false);
最后的图案如图:
但如果你把false换成true,结果又如下:
圆基本上就是这样了,如果你想要实心或者空心的,就去掉边框和实心填充就行了。
下面我们在说一个绘制圆角直线:
在上一次中我们不是说了一个绘制直线的方法吗,我们现在只要在中间加这一句话就行了:
lineCap=‘round‘;
现在我们看整体代码如下:
ctx.beginPath();
ctx.lineCap=‘round‘;
ctx.strokeStyle="blue";
ctx.lineWidth=10;--------这句代码是设置线条的宽度
ctx.moveTo(100,100);
ctx.lineTo(100,200);
closePath()---------绘制路径path结束,它会绘制一个闭合的区间,添加一条起始位置到当前坐标的闭合曲线;
ctx.stroke();
结果如下:
现在我样来说下平移、绽放和旋转等:
translate(x,y)-------平移变换,原点移动到坐标(x,y);
rotate(a)------旋转变换,旋转a度角;
scale(x,y)-----伸缩变换;
save(),restore()----提供一个堆栈,保存和恢复绘图状态,save将当前绘图状态压入堆栈,restore出栈,恢复绘图状态;
fillText(text,x,y)-----绘制文字;
rect()------矩形路径;
注意:在这里,平移和旋转的都是画布,就是说,图形本身是没有变的,只是变了画布;
ctx.strokeStyle="red";
ctx.lineWidth=10;
ctx.rect(100,100,100,200);//矩形路径
ctx.translate(100,100);//平移
ctx.scale(2,2);//缩放
ctx.rotate(30*Math.PI/180);//选转
ctx.moveTo(10,10);
ctx.lineTo(10,150);
ctx.stroke();
最后结果如下:
本次就说到里了,如果感兴趣,你现在也可以自己绘制一些简单的图形了。