今天从头开始学canvas亚历山大。。好在终于磨蹭出来了一个时钟demo...啊,也不知道这篇该写点什么,就交代一下今天用到的canvas中的方法吧
getContext()方法
要在canvas上绘图,需要取得绘图的上下文,也就是需要调用getContext()方法传入上下文的名字。例如:
传入“2D”,就可以取得2D上下文对象
使用getContext之前,记得确定浏览器是否支持canvas元素
if(drawing.getContext){
drawing是某个canvas元素的变量名
}
fillStyle、strokeStyle填充和描边
这两个属性的值可以是字符串、渐变对象或模式对象,而且他们的默认值都是#000000。
- 如果是绘制矩形,直接用在context.fillRect(x,x,x,x)之前就好了,这个绘图样式会持续到直到你写了下一个fillStyle或strokeStyle;
- 如果是绘图路径,需要在创建路径后调用fill()或stroke()方法,才能看到前文写的fillStyle或strokeStyle
0.绘制矩形
fillRect()、strokeRect()和clearRect()
矩形是唯一一种可以直接在2D上下文中绘制的形状。与矩形有关的方法包括fillRect()、strokeRect()和clearRect()。 这三个方法都接受四个参数:
- 矩形的x坐标
- 矩形的y坐标
- 矩形宽度
- 矩形高度
fillRect()方法在画布上绘制的矩形会填充指定的颜色,颜色通过fillStyle属性指定
strokeRect()方法在画布上绘制的矩形会描边指定的颜色,颜色通过strokeStyle属性指定
clearRect()方法用于清除画布上的矩形区域。(注意,是把这块画布上被框进去的矩形区域全部清除,不会只清理上层)
1.绘制路径
arc
arc(x,y,r,sAngle,eAngle,counterclockwise);圆心,半径,起始角度,结束角度(弧度,只能用π计算),最后一个参数写true则表示起始角度和结束角度按逆时针方向计算
lineTo(x,y)
从上一点开始绘制一条直线,到(x,y)为止
moveTo(x,y)
将绘图游标移动到(x,y),不画线
亲测如果在画圆的时候,没有移动到画圆的起点(默认三点钟方向也就是0°时), 在下一步画圆时会拖出一条到画圆起点的线(就算moveTo已经移动到了圆上的一个任意点,也还是会拖出一条线到起点)
clip()
在创建了路径后,可以使用这个方法在路径上创建一个剪切区域
2.绘制文本
fillText、strokeText()
这两个方法都可以接受4个参数:
- 要绘制的文本字符串
- x坐标
- y坐标
- 可选的最大像素宽度
这两个方法都以下列3个属性为基础
- font:表示文本样式、大小及字体,例如"10px bold Arial"
- textAlign:表示文本对齐方式,推荐start、end(这两个同时适合从左到右和从右到左显示(阅读)的语言)、center,此外还有:left,right
- textBaseline:表示文本的基线,例如top,hanging,middle,alphabetic,ideographic,bottom
这几个属性都有默认值,因此没必要每次使用他们都重新设置一遍
fillText()方法使用fillStyle属性绘制文本,而strokeText()方法使用strokeStyle属性为文本描边,fillText用得更多,因为它模拟了网页中的正常显示文本
3.变换
今天只用到一个变换的方法...
translate(x,y)
将坐标原点移动到(x,y)。执行这个变换以后,坐标(0,0)会变成之前由(x,y)表示的点
非常好用!比如说在画圆的时候,默认原点是(0,0),我想画一个半径100的圆,圆心就得设置(100,100),更别说之后的操作了,但是有了这个属性,我可以先设置:
translate(100,100) //原点现在在(100,100)处,圆心直接写(0,0)
4.乱七八糟想法
其实今天看书时候还是看到了很多很多方法的,但是实际用的时候只用到了这一点。。明天给这个demo加功能的时候再尽量多用一点熟悉一下吧!
ps:canvas真的好强大!