初步了解Canvas API

Canvas介绍

HTML5新增的标签:配合JavaScript Canvas技术的画布标签
原本没有大小的,需要设置,设置canvas的width属性和height属性(不是在style中设置)

<canvas id="canvs"></canvas>

获取上下文

获取canvas的上下文,getContext(‘2d’)参数2d,代表需要使用 Canvas API,getContext(‘webgl’)参数webgl代表需要使用WebGL API

//获取画布标签
const oCan = document.getElementById('canv');
const ctx = oCan.getContext('2d');

其中ctx是一个对象CanvasRenderingContext2D
在这里插入图片描述
在这里插入图片描述

给oCan画布设置宽高属性

一开始canvas没有设置宽高的时候会有一个默认的大小(并不是所有的浏览器都有,有些浏览器的版本是没有默认大小的)
取HTML满屏的宽高赋值给canvas,这里不要设置在style上,也不用加px单位,因为不是给canvas标签添加样式,而是给canvas画布添加样式

const clientWidth = document.documentElement.clientWidth;
const clientHeight = document.documentElement.clientHeight;
oCan.width = clientWidth;
oCan.height = clientHeight;

画布上绘制图形

设置好宽高后,就可以在画布上画东西了
首先了解
画线条:stroke(笔画)
填充颜色:fill
ctx.strokeStyle = "green"设置画线的颜色,ctx.fillstyle= "blue"设置填充的颜色
线段头的样式
ctx.lineCap=“round”
交叉头样式(线段和线段之间需要连接的时候)
ctx.lineJoine="round"把两个线段很好的连接,从而不会出现锯齿一样的东西
线段的宽度(线的粗度)
ctx.lineWidth = 2
开始画东西
开始画的路径(开启绘制路径)
ctx.beginPath()
1.将画笔移动到开始画的坐标上
ctx.moveTo(x,y)
2.要把画笔画到哪个像素上
这条线段要延申到什么坐标
ctx.lineTo(300, 200)
3.开始按照1,2的行为规则开始画画
ctx.stroke()
画个三角形

const oCan = document.getElementById('canvas');
const ctx = oCan.getContext('2d');
const clientWidth = document.documentElement.clientWidth,
      clientHeight = document.documentElement.clientHeight;
oCan.width = clientWidth;
oCan.height = clientHeight;
ctx.strokeStyle = '#baf';
ctx.fillStyle = 'blue';
ctx.lineWidth = 4;
ctx.beginPath();
ctx.moveTo(100, 100);
ctx.lineTo(300, 300);
ctx.lineTo(500, 200);
ctx.lineTo(100, 100);
ctx.stroke();

在这里插入图片描述

画圆,在之前的基础上,另起一个绘制路径
arc(弧)
ctx.arc(600, 600, 5,0,2 * Math.PI, false)
(圆心x坐标,圆心y坐标,半径, 开始弧度,结束弧度,false顺时针绘制(true逆时针绘制))
const oCan = document.getElementById(‘canvas’);

const ctx = oCan.getContext('2d');
const clientWidth = document.documentElement.clientWidth,
      clientHeight = document.documentElement.clientHeight;
oCan.width = clientWidth;
oCan.height = clientHeight;
ctx.strokeStyle = '#baf';
ctx.fillStyle = '#bfa';
ctx.lineWidth = 4;
ctx.beginPath();
ctx.moveTo(100, 100);
ctx.lineTo(300, 300);
ctx.lineTo(500, 200);
ctx.lineTo(100, 100);
ctx.stroke();
// 画圆
ctx.beginPath();
ctx.arc(600, 100, 50, 0, 2 * Math.PI, false);
ctx.stroke();
ctx.fill()

在这里插入图片描述

画半圆
顺时针画的半圆,那么画笔最后是停在(660,200)的位置,将画笔移动到这里,并在(740, 200)的位置停止,就得到的了一个半圆。

ctx.beginPath();
ctx.arc(700, 200, 40, 0, Math.PI, false)
ctx.moveTo(660, 200);
ctx.lineTo(740, 200);
ctx.stroke();

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值