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

本文简介

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

在 《p5.js 光速入门》 里我们学过加载图片元素,学过过背景色的用法,但当时没提到背景图要怎么使用。

本文就把背景图这部分内容补充完整,并且会提到在 p5.js 里使用背景图的一些注意点。



背景图的用法

p5.js 里使用背景图只需做以下几步操作即可。

  1. 使用 loadImage() 加载图片资源。
  2. 使用 background() 设置背景图。
// 创建画布并加载图片
function setup() {// 创建一个 500x500 的画布createCanvas(500, 500)// 加载图片let bg = loadImage('../images/bg.png')// 设置背景图background(bg)
}

上面这种写法是错的!!!


正确的写法是先加载好图片再绘制。

p5.js 官网上的案例是这样写的。

let bg = nullfunction setup() {createCanvas(500, 500)// 加载图片bg = loadImage('../images/bg.png')
}function draw() {// 将图片添加到背景里background(bg)
}

出来的结果是这样

file

在这个例子中,我准备的图片的尺寸是 3073*3072,而画布的尺寸是 500*500。从画布输出的效果可以看出,图片是被百分百展示出来,并没有裁切过。

file

如果画布和背景图的宽高比不一致,画布会被拉伸。

比如

file

let bg = nullfunction setup() {createCanvas(800, 300)// 加载图片bg = loadImage('../images/bg.png')
}function draw() {// 将图片添加到背景里background(bg)
}

由此可见,使用 background() 设置背景图,图片会根据画布的宽高自动拉伸适配。

而使用 image() 方法渲染图片的时候默认是按照图片自身的尺寸进行渲染。

这是两者之间的不同。



更优的写法

结合前面的几个例子,可能有工友会有点疑问。

为什么在 setup() 里一次性把图片加载并添加到背景是错误的写法呢?

因为图片作为一种资源文件加载肯定是需要时间的,在没加载完就使用的话会比较容易出问题。

所以在 p5.js 官网的例子中,会在 setup() 里加载图片资源,然后在 draw() 里再把图片绘制出来。

但其实还有更安全的写法。

p5.js 提供了一个 preload() 的生命周期,这个生命周期的执行时间比 setup() 要早。preload() 通常用作资源加载,比如需要加载图片或者视频的时候会写在这里。

let bg = nullfunction preload() {// 加载图片bg = loadImage('../images/bg.png')
}function setup() {// 创建画布createCanvas(500, 500)
}function draw() {// 将图片添加到背景里background(bg)
}

以上就是本期的所有内容,关于 p5.js 生命周期方面的知识还不太了解的工友可以看看 《p5.js 光速入门》 。



推荐阅读

👍《p5.js 光速入门》

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

👍《p5.js 变换操作》

👍《p5.js map映射》

👍《p5.js 状态管理》

👍《p5.js 使用npm安装p5.js后如何使用?》


点赞 + 关注 + 收藏 = 学会了 代码仓库

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDK JVM JRE和Java API的关系

Java SE 英文全称是Java Standared Edition,它是Java的标准版。 Java SE由四部分组成:JDK JVM JRE和Java语言。 1.JDK Java Development Kit Java开发工具包。包含了所有编译,运行Java程序所需要的工具,还包含了Java运行环境&a…

npm改变npm缓存路径和改变环境变量

在安装nodejs时,系统会自动安装在系统盘C, 时间久了经常会遇到C盘爆满,有时候出现红色,此时才发现很多时候是因为npm 缓存保存在C盘导致的,下面就介绍下如何改变npm缓存路径。 1、首先找到安装nodejs的路径&#xff0c…

Linux MMC子系统 - 2.eMMC 5.1总线协议浅析

By: Ailson Jack Date: 2023.10.27 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:http://www.only2fire.com/archives/161.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。…

C++项目——云备份-⑥-服务端热点管理模块的设计与实现

文章目录 专栏导读1.热点管理类设计2.热点管理类的实现与整理 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领域新星创作者,新星计划导师,阿里云专家博主,CSDN内容合伙人…致力于 C/C、Linu…

如何系列 如何玩转远程调用之OpenFegin+SpringBoot(非Cloud)

文章目录 简介原生Fegin示例基础契约日志重试编码器/解码器自定义解码器 请求拦截器响应拦截器表单文件上传支持错误解码器断路器指标metrics客户端 配合SpringBoot(阶段一)配合SpringBoot(阶段二)1.EnableLakerFeignClients2.Lak…

vscode不显示横滚动条处理

最近发现vscode打开本地文件不显示水平的滚动条,但是打开一个临时文件是有水平滚动条的。 解决方案 可以一个个试 vscode配置 左下角设置–设置–搜索Scrollbar: Horizontal auto 自动visible 一直展示hidden 一直隐藏 拖动底部状态栏 发现是有的,但是…

UML中类之间的六种主要关系

UML中类之间的六种主要关系: 继承(泛化)(Inheritance、Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组…

【软考】系统集成项目管理工程师(九)项目成本管理【4分】

一、成本概念 1、产品全生命周期成本 产品或系统的整个使用生命周期内,在获得阶段(设计、生产、安装和测试等活动,即项目存续期间)、运营与维护、生命周期结束时对产品的处置所发生的全部成本 2、成本类型 成本类型描述可变成…

lossBN

still tips for learning classification and regression关于softmax的引入和作用分类问题损失函数 - MSE & Cross-entropy⭐Batch Normalization(BN)⭐想法:直接改error surface的landscape,把山铲平feature normalization那…

古剑奇谭木语人氪金最强阵容,土豪配置

古剑奇谭木语人是一款3D回合制RPG手游,以其精湛的古风画质、跌宕起伏的剧情和丰富多样的玩法而闻名。游戏中拥有许多强大的角色,每个角色都拥有独特的技能和机制。为了发挥出最大的实力,我们需要将角色搭配成一支强大的阵容。以下是当前版本中…

网络安全保险行业面临的挑战与变革

保险业内大多数资产类别的数据可以追溯到几个世纪以前;然而,网络安全保险业仍处于初级阶段。由于勒索软件攻击、高度复杂的黑客和昂贵的数据泄漏事件不断增加,许多网络安全保险提供商开始感到害怕继续承保更多业务。 保险行业 根据最近的路…

并发编程- 线程池ForkJoinPool工作原理分析(实践)

数据结构加油站: Comparison Sorting Visualization 并发设计模式 单线程归并排序 public class MergeSort {private final int[] arrayToSort; //要排序的数组private final int threshold; //拆分的阈值,低于此阈值就不再进行拆分public MergeSort…

CloudQuery + StarRocks:打造高效、安全的数据库管控新模式

随着技术的迅速发展,各种多元化的数据库产品应运而生,它们不仅类型众多,而且形式各异,国产化数据库千余套,开源数据库百余套 OceanBase 、PolarDB 、StarRocks…还有一些像 Oracle、MySQL 这些传统数据库。这些数据库产…

Vite介绍及实现原理

Vite介绍及实现原理 一、Vite简介1.1、什么是Vite1.2 、Vite的主要特性1.3、 为什么要使用Vite 二、Vite的实现原理2.1、依赖处理2.2、静态资源加载2.3、vue文件缓存2.4、 js/ts处理 三、热更新原理四、vite基本使用4.1、安装4.2、搭建项目 一、Vite简介 1.1、什么是Vite Vite…

uniapp中 background-image 设置背景图片不展示问题

有问题 <view class"file-picker__box jsz" tap"jszxszUpload(jsz)"></view>.jsz {background-image: url(../../static/example_drive.png); }解决1 <view class"file-picker__box jsz" :style"{ background-image: url(…

机器学习实验一:KNN算法,手写数字数据集(使用汉明距离)(2)

KNN-手写数字数据集&#xff1a; 使用sklearn中的KNN算法工具包&#xff08; KNeighborsClassifier)替换实现分类器的构建&#xff0c;注意使用的是汉明距离&#xff1b; 运行结果&#xff1a;&#xff08;大概要运行4分钟左右&#xff09; 代码&#xff1a; import pandas as…

Oracle(6) Control File

一、oracle控制文件介绍 1、ORACLE控制文件概念 Oracle控制文件是Oracle数据库的一个重要元素&#xff0c;用于记录数据库的结构信息和元数据。控制文件包含了数据库的物理结构信息、数据字典信息、表空间和数据文件的信息等。在Oracle数据库启动时&#xff0c;控制文件会被读…

RK3568-pcie接口

pcie接口与sata接口 pcie总线pcie总线pcie控制器sata控制器nvme设备sata设备nvme协议ahci协议m-key接口b-key接口RC模式和EP模式 RC和EP分别对应主模式和从模式,普通的PCI RC主模式可以用于连接PCI-E以太网芯片或PCI-E的硬盘等外设。 RC模式使用外设一般都有LINUX驱动程序,安…

面试题复盘-2023/10/20

目录 笔试题面试题&#xff08;未完待续&#xff09; 笔试题 一.多选题 A:map的key是const,不可更改 B:STL中的快速排序比一般的快速排序速度更快&#xff0c;是因为中值排序法 C:list的插入效率是O(1) D:vector的容量只能增大不能减小 解析&#xff1a; B: STL中的sort函数的…

Leetcode—66.加一【简单】

2023每日刷题&#xff08;十一&#xff09; Leetcode—66.加一 实现代码1 /*** Note: The returned array must be malloced, assume caller calls free().*/ int* plusOne(int* digits, int digitsSize, int* returnSize){int num 0;int i 0;int arr[110] {0};// 进位标识…