p5.js画布操作实战:创建,绑定指定元素,动态调整大小,隐藏滚动条,删除画布...

news2024/11/26 3:35:00

theme: smartblue

文章简介

之前在 《p5.js 光速入门》 里粗略讲过一下如何使用 p5.js 创建画布。

这次要介绍几个 p5.js 提供的画布相关的方法。

  • 创建画布时的相关配置。
  • 让画布绑定指定元素。
  • 重置画布大小。
  • 删除画布。

学习本文前你需要具备一点 p5.js 的知识,想了解的请查看 《p5.js 光速入门》。

创建画布

p5.js 里创建画布的方法叫 createCanvas,但其实如果你不使用该方法一样可以创建画布。

如果你使用了p5.jssetup() 或者 draw() 之类的生命周期函数,它们也会默认在页面上创建一个画布。

01.png

js function setup() { background(123) }

这是 p5.js 默认的动作,画布在不指定宽高时,会默认以 100px * 100px 的尺寸进行展示。

如果你想自定义画布宽高,可以使用 createCanvas(width, height) 方法传入宽高的值。

02.png

js function setup() { createCanvas(300, 200) background(123) }

在 《p5.js 3D图形-立方体》 里有介绍渲染 3D 图形时可以在 createCanvas() 传入 WEBGL 参数,有兴趣的工友可以去看看。

让画布绑定指定元素

使用前面提到的方法创建画布,p5.js 默认会帮我们把画布添加到 <body> 标签的最后面。如下图所示。

03.png

如果希望把画布添加进指定的页面元素里,可以这么做:

  1. 获取页面指定元素
  2. 使用 createCanvas 创建画布并返回画布对象
  3. 将画布添加到页面的指定元素里

04.png

```html

d1
d3

```

这个例子中,首先在页面创建3个 <div> ,然后把画布插入到第2个 <div> 里。

canvas.parent() 方法可以指定画布的父元素,传入的参数就是父元素对象。

让画布充满整个页面

通过前面的例子我们知道使用 createCanvas(width, height) 可以设置画布的宽高。

我们可以使用 window.innerWidthwindow.innerHeight 获取页面的宽高,这是原生知识点。

其实 p5.js 也提供了一些常用的常量,比如要获取页面宽高,可以使用 windowWidthwindowHeight

我们将这两个常量传入 createCanvas 就能创建一个和页面宽高一样的画布。

05.png

js function setup() { createCanvas(windowWidth, windowHeight) background(123) }

但视力好的工友应该已经发现了,用这招会导致滚动条出现。

有开发经验的工友可能知道 <body> 这个根标签是有默认的 margin,如果将 <body>margin 设置为 0 是不是就能解决这个问题呢?

06.png

```html

```

这么做问题只能解决一半,只看页面左上角的话确实把白边去掉了。但还是出现滚动条。

真正的解决方案是:

  1. bodymargin 设置为 0
  2. 把画布的 display 设置为 block

07.png

我们可以在创建画布之后再将它的 display 设置为 block,代码如下所示:

```html

```

重置画布大小

学会了前面几招,接下来可能就会遇到缩放浏览器时画布尺寸不会跟随缩放。

预览图的gif体积比较大,稍等一下~

08.gif

此时我们可以使用 p5.js 提供的 windowResized 方法监听浏览器缩放,然后通过 resizeCanvas(width, height) 方法修改画布尺寸。

看好啦:

09.gif

```html

```

除了设置画布宽度,有时候可能还要动态设置画布的位置。

设置画布位置的方法是 position(x, y) ,有需要的工友自己试试吧~

删除画布

在下一篇文章我会介绍如何使用 p5.js 创建视频元素,此时需要隐藏 canvas 元素,不然它会在页面占位。

这种情况就需要使用 noCanvas() 方法。

这个方法在需要时直接调用即可,我就不再录屏展示了。

js noCanvas()

推荐阅读

👍《p5.js 光速入门》

👍《p5.js 3D图形-立方体》

👍《p5.js 变换操作》

👍《p5.js map映射》

👍《p5.js 到底怎么设置背景图?》

👍《p5.js 开发点彩画派的绘画工具》

点赞 + 关注 + 收藏 = 学会了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/859157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在家查阅下载AACR(美国癌症研究学会)数据库文献

AACR&#xff08;美国癌症研究学会&#xff09;简介&#xff1a; 美国癌症研究学会American Association for Cancer Research创建于1907年&#xff0c;是世界上成立最早、规模最大的致力于全面、创新和高水准癌症研究的科学组织。其出版物包括7种正式出版的期刊&#xff1a; …

如何让葡萄酒与晚宴菜单完美搭配?

如果你喜欢喝甜酒&#xff0c;世界上有很多经典的蜂蜜酒&#xff0c;它们通过数百年的精致生产方法达到美味的境界。糖浓缩的技术包括葡萄干燥&#xff0c;冷冻&#xff0c;甚至腐烂&#xff01;甜葡萄酒是最通用的&#xff0c;因为它们可以搭配从开胃菜到甜点的所有晚餐。 来自…

多分类评估 Micro, Macro Weighted Averages of F1 Score和适用场景

classification_report展示了weighted average F1 Score:需要区分类别,计算每个类别的f1-score,对所有类别的f1-score加权平均,权重为类别对应的样本数量占总样本数量的比例 Micro F1 Score:不需要区分类别,直接使用总体样本计算f1-score Macro F1 Score:需要区分类别…

收益抽6成,谁给你的脸?

2023年8月10日18时&#xff0c;CSDN官方发布了《CSDN付费专栏分润调整公告》&#xff0c;称将对付费专栏作者收入分润进行阶梯式调整。 根据公告内容&#xff0c;如果我没理解错的话&#xff0c;定价10元的付费专栏&#xff0c;每一个订阅&#xff0c;作者最低只能拿到40%&…

VMware虚拟机安装教程

VMware虚拟机安装教程 一、VMware虚拟机介绍 VMware Workstation Pro 是行业标准桌面 Hypervisor&#xff0c;使用它可在 Windows 或 Linux 桌面上运行 Windows、Linux 和 BSD 虚拟机。   详情可查看VMware官网。 二、VMware下载 1.可以通过华军软件园进行下载&#xff1a;…

C语言创建目录(文件夹)之mkdir

一、mkdir 说明&#xff1a;创建目录。 头文件库&#xff1a; #include <sys/stat.h> #include <sys/types.h>函数原型&#xff1a; int mkdir(const char *pathname, mode_t mode);mode方式&#xff1a;可多个权限相或&#xff0c;如0755表示S_IRWXU | S_IRGRP…

基于熵权法对Topsis模型的修正

由于层次分析法的最大缺点为&#xff1a;主观性太强&#xff0c;影响判断&#xff0c;对结果有很大影响&#xff0c;所以提出了熵权法修正。 变异程度方差/标准差。 如何度量信息量的大小&#xff1a; 把不可能的事情变成可能&#xff0c;这里面就有很多信息量。 概率越大&…

Telerik Test Studio R2 2023 Crack

Telerik Test Studio R2 2023 Crack Telerik Test Studio是一款用于Web和桌面应用程序的端到端测试自动化工具&#xff0c;支持功能性UI、RESTful API和负载/性能测试。无论您是无代码还是使用TestStudio的基于代码的自动化功能&#xff0c;您都将始终获得最佳的应用程序质量和…

马来西亚的区块链和NFT市场调研

马来西亚的区块链和NFT市场调研 基本介绍 参考&#xff1a; https://zh.wikipedia.org/wiki/%E9%A9%AC%E6%9D%A5%E8%A5%BF%E4%BA%9A zz制度&#xff1a;联邦议会制 语言文字&#xff1a; 马来语 民族&#xff1a; 69.4%原住民&#xff08;土著&#xff09;&#xff0c;23.2%…

Android 取证之微信8.0.38版本数据库解密分析

0x01 前言 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 0x02 软硬件环境 app 版本&#xff1a;8.0.38 inject&#xff1a;frida …

统信UOS下eclipse使用lombok报错的问题

lombok不兼容问题 lombok不支持高版本jdk&#xff0c;本人在应用商店下载eclipse安装的&#xff0c;默认用的jdk17&#xff0c;不兼容lombok插件&#xff0c;需要调整eclipse.ini配置文件&#xff0c;如下&#xff1a; #/opt/apps/org.eclipse.java-ee/files/eclipse.ini -ja…

香港站群服务器为什么适合seo优化?

​  香港站群为什么适合seo优化?本文主要从以下四点出发进行原因阐述。 1.香港站群服务器的优势 2.香港站群服务器与国内服务器的对比 3.多IP站群服务器的优势 4.香港站群服务器在SEO优化中的注意事项 1.香港站群服务器的优势 香港站群服务器是为了满足企业SEO优化需求而提供…

iconfont 使用

官网地址 iconfont-阿里巴巴矢量图标库 常规操作&#xff1a;注册账号 首页 搜索想要的图片 加入购物车并添加项目没有就创建一个 在线生成链接 复制生成的css 在前端软件创建相关的wxss文件 全局 import "/static/iconfont/iconfont.wxss";page {height: 100%; }…

Jenkins 插件下载速度慢安装失败?这篇文章可能解决你头等难题!

Jenkins部署完毕&#xff0c;如果不安装插件的话&#xff0c;那它就是一个光杆司令&#xff0c;啥事也做不了&#xff01; 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI/CD必要插件。 但是问题来了&#xff0c;jenkins下载插件速度非常慢&#xff0…

【腾讯云 Cloud Studio 实战训练营】用于编写、运行和调试代码的云 IDE泰裤辣

文章目录 一、引言✉️二、什么是腾讯云 Cloud Studio&#x1f50d;三、Cloud Studio优点和功能&#x1f308;四、Cloud Studio初体验&#xff08;注册篇&#xff09;&#x1f386;五、Cloud Studio实战演练&#xff08;实战篇&#xff09;&#x1f52c;1. 初始化工作空间2. 安…

(十)人工智能应用--深度学习原理与实战--模型的保存与加载使用

目的:将训练好的模型保存为文件,下次使用时直接加载即可,不必重复建模训练。 神经网络模型训练好之后,可以保存为文件以持久存储,这样下次使用时就不重新建模训练,直接加载就可以。TensorfLow提供了灵活的模型保存方案,既可以同时保存网络结构和权重(即保存全模型),也可…

这回稳了!电力巡检摄像头解决方案全新来袭

最近的狂飙成为大家的话题&#xff0c;现在是互联网的时代&#xff0c;想要的信息总能在互联网获取…这也是我一直喜欢分享科技话题给大家的原因。 疫情已经终于离我们而去&#xff0c;在这春回大地的时候&#xff0c;是时候要分享一下电力行业智能巡检的一些解决方案给大家。这…

从零开始学python(十六)爬虫集群部署

前言 今天讲述Python框架源码专题最后一个部分&#xff0c;爬虫集群部署&#xff0c;前面更新了十五个从零开始学python的系列文章&#xff0c;分别是&#xff1a; 1.编程语法必修篇 2.网络编程篇 3.多线程/多进程/协程篇 4.MySQL数据库篇 5.Redis数据库篇 6.MongoDB数据库篇 …

备战金九银十 I 没有自动化测试项目经验的测试人快快看过来!

学习自动化测试最难的是没有合适的项目练习。测试本身既要讲究科学&#xff0c;又有艺术成分&#xff0c;单单学几个 API 的调用很难应付工作中具体的问题。 你得知道什么场景下需要添加显性等待&#xff0c;什么时候元素定位需要写得更加优雅&#xff0c;为什么需要断言这个元…

idea 加入 .so文件

背景 做项目的时候&#xff0c;遇到需要查看native 方法 涉及到c源码的查看&#xff0c;因此需要加载.so文件去查看。 操作 idea-file-project structure 找到lib&#xff0c;把你的.so文件添加进来就可以啦 然后你就可以查看对应的源码了。