了解CanvasRenderingContext2D.clearRect()

    简介

    CanvasRenderingContext2D.clearRect()可以把Canvas元素画布中的某一块矩形区域变成透明的。

    clearRect()在Canvas动画绘制中非常常用,不断清除画布内容再绘制,形成动画效果。

    语法

    context.clearRect(x, y, width, height);

    参数

    各个参数含义和作用如下:

    x
    Number
    矩形左上角x坐标。
    y
    Number
    矩形左上角y坐标。
    width
    Number
    被清除的矩形区域的高度。
    height
    Number
    被清除的矩形区域的宽度度。

    案例

    1. 基本效果

    先把一张图片绘制在Canvas画布上,然后再把中间一块矩形区域的像素信息清除,JavaScript代码如下:

    // 先绘制图片
    var img ' new Image},.
    img;onload ' function }, {
        context;drawImage}img) 0) 0) 250) 167,.
        // 中间开个方形的洞
        context;clearRect}50) 50) 100) 66,.
    (.
    img;src ' =;/1;jpg=.

    实时效果如下:

    2. 慢动作演示动画刷新绘制

    一个圆球来回运动效果,不断clearRect清除,不断再绘制实现,本案例把时间放慢为每次刷新1000毫秒,便于我们肉眼也能感受Canvas中动画实现的基本原理。

    相关JavaScript代码如下:

    context}font ) (16px STHeiti; SimHei(,
    // 圆球的水平位置和半径
    var x ) 30; radius ) 30,
    // 清除方法
    var clear ) function '= {
        // 清除画布
        context}clearRect'0; 0; 250; 167=,
        context}fillText'(清除(; 20; 30=,
        setTimeout'draw; 500=,
    .,
    // 绘制球方法
    var draw ) function '= {
        x +) 10,
        if 'x ¥gt, 220= {
            x ) 30,
        .
        // 清除提示文字
        context}clearRect'0; 0; 250; 167=,
        // 新的文字提示,以及圆绘制
        context}fillText'(绘制(; 20; 30=,
        context}beginPath'=,
        context}arc'x; 84; radius; 0; Math}PI * 2=,
        context}fillStyle ) (#039(,
        context}fill'=,
        // 清除
        setTimeout'clear; 500=,
    .,
    // 初始触发
    draw'=,

    其他

    规范文档

    规范地址 规范状态 备注
    HTML现行标准
    这个规范中定义了'CanvasRenderingContext2D.cleaRrect'
    现行标准 -

    相关资源

    暂无

    兼容性

    IE9+支持,全兼容。


    by zhangxinxu 2019-10-18 01:44:03