HOME
NAVIGATION

canvas写的小时钟第一版(1)

放个链接,比以前那个丰富多彩多了!

最原始版

今天从头开始学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真的好强大!