canvas笔记

本文介绍了HTML5的canvas标签及其基本使用,包括如何设置画布尺寸、填充颜色以及绘制矩形。阐述了canvas的编程思想,如像素化、动画逻辑,并通过示例展示了如何创建和更新canvas动画。同时,提到了关键方法如fillStyle、fillRect、strokeStyle等,以及如何通过面向对象方式实现canvas动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是canvas

HTML5 提出了一个新的 canvas 标签,彻底颠覆了 Flash 的主导地位。无论是广告、游戏都可以使用 canvas 实现了,Canvas 是一个轻量级的画布,我们使用 Canvas 进行 JavaScript 的编程,不需要增加额外的插件,性能也很好,不卡顿,在手机中也很流畅

二、基本使用

<canvas width='400' height='400' id='mycanvas'>
当前浏览器不支持canvas,请升级浏览器
</canvas>

canvas的标签属性只有两个,widthheight,表示画布的宽度和高度

方法说明
getContext()得到画布上下文,2d的上下文,3d的上下文
fillStyle设置颜色
fillRect(x,y,width,height)方法绘制“已填充”,默认的填充颜色是黑色

三、canvas的编程思想

1、像素化

我们使用 canvas 绘制了一个图形,一旦绘制成功了,canvas 就像素化了他们。 canvas 没有能力,从画布上再次得到这个图形,也就是说我们没有能力去修改已经在画布上的内容。这个就是 canvas 比较轻量的原因,Flash 重的原因之一就有它可以通过对应的 api 得到已经上 “画布” 的内容然后再次绘制,如果我们想要让这个 canvas 图形移动,必须按照清屏 - 更新 - 渲染的逻辑进行编程,总之就是重新再画一次

2、动画思想

清屏——更新——渲染这个思想就可以为canvas的动画思想

var canvas=document.getElementById("mycanvas");
var ctx=canvas.getContext("2d")
ctx.fillStyle="blue"
// 设置信号量
var left=10;
setInterval(()=>{
    //清除画布
    ctx.clearRect(0,0,700,600)
    // 更新信号量
    left++;
    ctx.fillRect(left,left,100,100)
    if(left==700){
        left=10
    }
},4)

我们把每一次绘制的静态画面叫做 " 一帧 ",时间的间隔 (定时器的间隔) 就表示的是帧的间隔

3、面向对象实现canvas动画

因为canvas不能得到已经上屏的对象,所以我们要维持对象的状态,在canvas动画中,我们都使用面向对象的方式来维持canvas需要的属性和方法

// 获取画布
var can = document.getElementById("can")
var ctx = can.getContext("2d");
// 绘制方法
function Rect(x, y, w, h, color) {
    this.x = x;
    this.y = y;
    this.w = w;
    this.h = h;
    this.color = color
}
// 更新方法
Rect.prototype.update = function () {
    this.x++;
}
// 渲染
Rect.prototype.render = function () {
    // 设置颜色
    ctx.fillStyle = this.color;
    // 渲染
    ctx.fillRect(this.x, this.y, this.w, this.h);
}
// 实例化
var r1 = new Rect(100, 100, 50, 50, "#91d5ff")
// 动画过程
setInterval(() => {
    //清屏
    ctx.clearRect(0, 0, can.width, can.height)
    //更新
    r1.update()
    // 渲染
    r1.render()
}, 5)

动画过程中在主定时器里面,每一帧都会调用实例的更新和渲染方法

四、canvas绘制功能

方法说明
fillStyle设置填充颜色
fillRect(x,y,width,height)方法绘制“已填色”的矩形。
strokeStyle设置边框颜色
stokeRect(x,y,width,height)方法绘制“边框”矩形
clearRect(x,y,width,height)清除画布内容
globalAlpha设置透明度0-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值