Canvas之概述,画布与画笔

Canvas之概述,画布与画笔

概述

Canvas 解决了之前使用 flash 带来的兼容性,性能和开发成本的问题。 Canvas 是一个标签,并不能绘制图形,它需要使用 Canvas API 才能进行绘制。

Canvas 绘制的是位图。位图可以很好地控制每一个像素,但在缩放时会失真,并且也不好在页面进行交互。而矢量图可以很好地交互,因为它是一个个dom对象。体积更小,渲染没有位图好,但不会失真。 Canvas 和引入的图片类似,可以直接右键保存。

画布画笔的创建

js 复制代码
<canvas id="canvas">
    您的浏览器版本过低,不支持canvas,请升级浏览器或更换浏览器
</canvas>
<script>
    //获取标签创建画布
    const canvas1 = document.querySelector('#canvas');
    //获取画笔
    const context1 = canvas.getContext('2d');

    //使用js创建画布
    const canvas2 = document.createElement('canvas');
    document.body.append(canvas2);
    //判断是否浏览器支持canvas
    if(!canvas2.getContext){
        console.log('您的浏览器版本过低,不支持canvas,请升级浏览器或更换浏览器');
    }else{
        const context2 = canvas2.getContext('2d');
    }
</script>

有两种方式可以创建画布。一种是使用 canvas 标签,然后获取到画布,另一种是直接创建 canvas 元素,然后放到 body 里。并且还可以创建画笔。

创建画笔时可以进行判断,如果浏览器不支持 canvas ,则画笔就不会被找到。当然也可以直接在标签内写入不支持的文本或图片。使用第二种创建画布的方式更被推荐。因为这样可以被编辑器识别,可以有更好的提示。不过在实际效果上两者相同。

画布区域特点

js 复制代码
<style>
        canvas {
            border: 1px solid #ccc;
            display: block;
            margin-left: 100px;
        }

        #c1 {
            width: 200px;
            height: 200px;
        }
        #c2 {
            width: 400px;
            height: 400px;
        }
        #c3 {
            width: 800px;
            height: 800px;
        }
    </style>
</head>

<body>
    <canvas id="c1" width="400" height="400"></canvas>
    <canvas id="c2" width="400" height="400"></canvas>
    <canvas id="c3" width="400" height="400"></canvas>
    <script>
        {
        const canvas = document.querySelector('#c1');
        const context = canvas.getContext('2d');
        context.fillRect(100, 100, 100, 100);
        }
        {
        const canvas = document.querySelector('#c2');
        const context = canvas.getContext('2d');
        context.fillRect(100, 100, 100, 100);
        }
        {
        const canvas = document.querySelector('#c3');
        const context = canvas.getContext('2d');
        context.fillRect(100, 100, 100, 100);
        }
    </script>
</body>

我们可以在画布上填充一个矩形,都以画布左上角的 (0,0) 原点为起始点,分别为 x,y,w,h 四项。画布内有一个坐标系。这个坐标系的坐标是无限的,但我们只能通过 width 和 height 得到一个固定的尺寸。默认的宽高为 300*150 ,并且 canvas 是一个行内元素,也就是说它是并列排放,一行一行排放。

还有一个放置区域。画好的图像在画布区域,我们要把它放到放置区域。并且我们需要调整它的大小通过 style 样式。可以放大或者缩小,如果放大会导致失真。默认让画布区域和放置区域相同。

相关推荐
DoraBigHead12 分钟前
你写前端按钮,他们扛服务器压力:搞懂后端那些“黑话”!
前端·javascript·架构
前端世界1 小时前
鸿蒙UI开发全解:JS与Java双引擎实战指南
javascript·ui·harmonyos
Xiaouuuuua1 小时前
一个简单的脚本,让pdf开启夜间模式
java·前端·pdf
@Dream_Chaser1 小时前
uniapp ruoyi-app 中使用checkbox 无法选中问题
前端·javascript·uni-app
深耕AI1 小时前
【教程】在ubuntu安装Edge浏览器
前端·edge
倔强青铜三1 小时前
苦练Python第4天:Python变量与数据类型入门
前端·后端·python
倔强青铜三2 小时前
苦练Python第3天:Hello, World! + input()
前端·后端·python
上单带刀不带妹2 小时前
JavaScript中的Request详解:掌握Fetch API与XMLHttpRequest
开发语言·前端·javascript·ecmascript
倔强青铜三2 小时前
苦练Python第2天:安装 Python 与设置环境
前端·后端·python
ningmengjing_2 小时前
在 PyCharm 中安装并配置 Node.js 的指南
开发语言·javascript·ecmascript