html5 canvas浅介(二)

今天学的是比较基础的,就是最简单的绘制图形。(果然很简单。。。。)


在canvas中,绘制图形比较简单,有三种方式,分别是绘制“线段(line)”,“矩形(rect)”,“弧形(arc)”,那就一个一个来咯


绘制线段

代码如下:

var c = document.querySelector(".canvas");
						var cxt = c.getContext("2d");
						cxt.moveTo(0, 0);
						cxt.lineTo(299, 149);
						cxt.stroke();
前两不走我不需要讲了,直接第三步,

cxt.moveTo(0, 0);
这里指的是跳转到我们要绘制的起点,毕竟一条线段肯定要知道何去何从,对吧

接下来

cxt.lineTo(299, 149);


既然我们有了起点,那么久肯定会有一个终点,而这个终点自然就是我们这个lineto方法中所说到的坐标

cxt.stroke();

这个方法是绘制图像的意思。但是注意,还有一个ctx。fill方法,这两个方法有很大的区别

使用stroke时,只有线条的绘制

但是使用fill的时候,我们出现的情况会是实心的
而这里,是不会出现空心现象的,因为这个是一条线条,所以是不可能出现j空心现象的(而且必须使用stroke方法才能绘制出直线,不懂,没百度原理)

而如果要绘制多条线段,我们需要做的事在多加几个lineto
至于设置线条宽度等属性,后面再讲,因为这个是context的内容


绘制矩形

	var c = document.querySelector(".canvas");
		var cxt = c.getContext("2d");
		cxt.fillStyle = "#00ff00";//设置颜色
		cxt.fillRect(0, 0, 150, 75);
		cxt.strokeRect(0, 0, 100, 100);

前面提及到了绘制的方法有两种,分别是fill,还有stroke

在绘制矩形的方法中,自然会有绘制实心以及空心的两种方式,

cxt.fillRect(0, 0, 150, 75);

这是绘制实心的矩形,他的四个参数,分别是起点的x坐标,y坐标,终点的x坐标,y坐标


这样我们就会绘制出一个实心圆了,对比绘制直线,我们应该看到,少了两个方法,分别是moveto,以及stroke或者是fill方法



为什么?因为我们的fillrect方法,绘制图形,我们不需要去设置他的起点,也不需要去绘制,因为他在调用fillrect方法的时候已经绘制成功了

cxt.strokeRect(0, 0, 100, 100);


不多说,自己理解

当然你也可以使用以下的方法:

var c = document.querySelector(".canvas");
		var cxt = c.getContext("2d");
		cxt.fillStyle = "#00ff00";
		//				cxt.fillRect(0, 0, 150, 75);
		//				cxt.strokeRect(0, 0, 100, 100);
		cxt.rect(0, 0, 100, 100);
		cxt.stroke();


绘制弧形

var c = document.querySelector(".canvas");
		var cxt = c.getContext("2d");
		cxt.arc(100, 100, 100, 0, 2 * Math.PI);
		cxt.stroke();

短短四行代码,却也不是那么容易理解,

cxt.arc(100, 100, 100, 0, 2 * Math.PI);

定义了一个原的形状,参数分别是原点的x坐标,原点的y坐标,半径,起点的位置(使用π),终点的位置(使用π)



其实还有一个参数,是设置他的方向,默认为,顺时针为false,逆时针为true,所以真正的写法应该是这样的:

	cxt.arc(100, 100, 100, 0, 2 * Math.PI,true);

但是由于可以省略,所以我很多时候不会写上去的

盗了一张图:

其中右方0度的位置就是我们的起点

使用的时候,有几个坑,需要我们注意一下,

看代码,我们发现出现了stroke方法,少了moveto方法

使用ctx。stroke方法,自然是为了让我们能画出空心的弧线,而且这与画矩形不同,画弧线只是定义了一个路径,并没有实际的去使用,所以我们需要使用到fill或者stroke方法

而是用moveto方法,会怎样?我们加上个moveto(0,0)看看

很强,我们看出了我们多花了一条线,是从0,0的位置到我们的起点的位置,所以这个坑要小心点

但是如果是使用fil方法,会出现一种可爱的现象,我也想知道为什么。。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值