canvas

1、canvas基本概览

canvas:画布,h5新标签;

  • canvas本身没有任何外观,只是在文档中创建了一个画板;
  • ie9之前的版本不支持canvas;
  • 画布的宽度和高度要用canvas的属性设置,不要直接在css里面定义;
  • 画布的getContext()方法返回一个“绘制上下文”对象;
    绝大多数的画布绘制API来自这个对象;
    也就是说画布元素和他的上下文对象是两个完全不同的概念;
    调用该方法时,传递的参数是“2d”,也就是getContext('2d'),可以在画布上绘制二维图像;
    3d绘制就相对比较复杂了,具体实现还在规范中;

2、画布的尺寸和坐标

  • 画布以左上角(0, 0)为坐标原点;
  • 往右为X轴的坐标不断增大;
  • 往下为Y轴的坐标不断增大;

3、绘制线段和填充多边形

1.绘制线段的API是上下文对象的方法;

​ 2.beginPath:开始定义一条新的路径;

​ 3.moveTo:开始定义一条新的子路径,该方法确定了线段的起点;

​ 4.lineTo:将上面定义的线段起点和指定的新的点连接起来;

​ 5.到这里只是规划好了思路,还没有在画布上画出任何图形;

​ 6.fill():填充区域,此时只是填充,起点和终点并没有连接起来;

​ 7.closePath:会把起点和终点连接起来;

​ 8.stroke():开始绘制图形,当前路径下的所有子路经都会绘制出来;

​ 9.如果要接着绘制新的路径,记得调用beginPath()方法;

4、绘制

4.1绘制线段

Ps:

  • 画布以左上角(0, 0)为坐标原点;
  • var huatu = canvas1.getContext(“2d”),加"2d"不然没有效果
  • 如果不给设置widht、height属性时,则默认 width为300、height为150,单位都是px。也可以使用css属性来设置宽高,但是如宽高属性和初始比例不一致,他会出现扭曲。所以,建议永远不要使用css属性来设置的宽高。
    <canvas id="canvas" width="600" height="600">
    </canvas>
    <script>
        var canvas1 = document.querySelector("#canvas")
        // 拿到canvas对象
        var huatu = canvas1.getContext("2d")//2d图
        // 通过canvas对象里面的方法拿到绘图工具
        huatu.moveTo(20, 20)
        // 线段开始的坐标
        huatu.lineTo(200, 200)
        // 线段结束的坐标
        huatu.stroke()
        // 开始绘制图形
    </script>

结果:
在这里插入图片描述

  • lineTo 会把上一次的终点作为这一次的起点,没有上一次的终点那就没有这一次的起点
        huatu.moveTo(20, 20)
        // 线段开始的坐标
        huatu.lineTo(200, 200)
        huatu.lineTo(500, 100)
        // 线段结束的坐标

4.2绘制矩形

(1)rect()

​ 语法:context.rect(x,y,width,height);

​ 四个参数: 起点坐标x,y:左上角坐标; 宽度width:矩形的宽度; 高度height:矩形的高度;

4.2.1rect

  <canvas id="canvas" width="600" height="600">
    </canvas>
    <script>
        var canvas1 = document.querySelector("#canvas")
        // 拿到canvas对象
        var huatu = canvas1.getContext("2d")//2d图
        // 通过canvas对象里面的方法拿到绘图工具
        huatu.moveTo(20, 20)
        // 线段开始的坐标
        huatu.lineTo(200, 200)
        huatu.lineTo(500, 100)
        // 线段结束的坐标
        huatu.stroke()
        // 开始绘制图形
        huatu.rect(200, 200, 200, 200)
        huatu.stroke()
    </script>

结果:在这里插入图片描述

4.2.2strokeRect

(2)strokeRect()方法可以直接绘制一个矩形;
​ 语法:context.strokeRect(x,y,width,height);

	<canvas id="box" width="600" height="600">
	</canvas>
	<script>
		var canvas = document.querySelector("#box")
		var ctx = canvas.getContext("2d") //Context 上下文
		ctx.fillRect(20, 20, 150, 100);//绘制一个已填充矩形

结果:
在这里插入图片描述

4.3曲线的绘制与填充

在这里插入图片描述

	<canvas id="box" width="600" height="600">
	</canvas>
	<script>
		var canvas = document.querySelector("#box")
		var ctx = canvas.getContext("2d") //Context 上下文
		let deg = Math.PI / 180
		ctx.arc(300, 300, 200, 0 * deg, 270 * deg, false)
		ctx.stroke()
	</script>

结果:
注意弧线的起点位置是0度,3点钟方向
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值