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 样式。可以放大或者缩小,如果放大会导致失真。默认让画布区域和放置区域相同。

相关推荐
yuanyxh27 分钟前
Mac 软件推荐
前端·javascript·程序员
万少33 分钟前
AtomCode开发微信小程序《谁去呀》 全流程
前端·javascript·后端
某人辛木1 小时前
Web自动化测试
前端·python·pycharm·pytest
Kagol1 小时前
Superpowers GSD gstack AgentSkills深度测评
前端·人工智能
excel2 小时前
JavaScript 字符串与模板字面量:从表象到本质理解
前端
京东云开发者3 小时前
当AI成为导演-如何用AI创作动漫短剧
前端
李白的天不白3 小时前
使用 SmartAdmin 进行前后端开发
java·前端
乘风gg3 小时前
🤡PUA AI Coding 工具 的 10 条终极语录
前端·ai编程·claude
学Linux的语莫3 小时前
Vue 3 入门教程
前端·javascript·vue.js
怕浪猫4 小时前
第一章、Chrome DevTools Protocol (CDP) 详解
前端·javascript·chrome