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

news2024/12/26 23:17:32

theme: smartblue

本文简介

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

这几天在整理书柜时看到这套书,看到梵高,想起他的点彩画。

01.jpg

想到点彩画派,不得不提的一个画家叫乔治·皮埃尔·秀拉。据说梵高也模仿过他的画作。

我引用一下维基百科对点彩画派的解析:

点彩画派(又称点描派;英文:Pointillism)是一种用很粗的彩点堆砌,创造整体形象的油画绘画方法。

说简单点,就是用圆点画画,比如秀拉的这幅作品《检阅》。

02.png

这种风格除了用在艺术绘画方面,在眼科医院体检的时候也会用到,比如测红绿色盲。

然后我又继续想啊想,想到我们用 canvas 好像也能做出一款点彩画的绘图工具,但用原生的方式写是不可能的,因为我懒。思前想后,还是觉得用 p5.js 写会好点,毕竟这个库也是个比较知名的艺术库。

于是查了一下 p5.jsapi ,做了一个简陋版的工具。样式方面就靠各位工友动手啦~

jcode

在移动端阅读的工友可以看下图效果~

03.gif

动手编码

要实现这个画版工具主要有以下步骤:

  1. 创建 canvas 画布。
  2. 创建颜色选择器。
  3. 创建画笔宽度控制器。
  4. 需要一个重置画布的按钮。
  5. 监听鼠标点击和点击时移动的位置。
  6. 根据鼠标点击和点击时移动的位置创建圆形。
  7. 点击重置画布按钮将画布背景设置回白色。

主要工作就是以上几步,而且这几步都用了 p5.js 提供的方法去实现。

主要用到的生命周期有 setupdraw,这部分我在 p5.js 光速入门 里有讲到。

创建颜色选择器、滑块、按钮分别用了 p5.jscreateColorPicker()createSlider()createButton() 方法。

绘制过程的代码写在 draw 周期里,使用了 circle() 方法创建圆形,圆形的坐标就是鼠标绘画时的当前坐标,圆形的尺寸是取滑块的值,圆形的颜色取了颜色选择器的值。

03.gif

以下是完整代码,可以结合上面的讲解和代码中的注释一起理解。

```html

```

上面的写法是用 CDN 的方式引入 p5.js,用法上和 npm 下载的 p5.js 是有一丢丢区别的,想了解这方面知识可以看看 《p5.js 使用npm安装p5.js后如何使用?》

同时我还把本文的代码放到【码上掘金】了,有兴趣的工友自行获取吧~

推荐阅读

👍《p5.js 光速入门》

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

👍《p5.js 变换操作》

👍《p5.js map映射》

👍《p5.js 状态管理》

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

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

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

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

相关文章

一文读懂功率信号源(信号发生器)

功率信号源是一种用于产生高功率信号的电子设备,它广泛应用于各个领域,在生产、测试和调试中起着重要的作用。下面就让安泰将介绍功率信号源的基本概念、工作原理、分类以及应用。 功率信号源是一种能够产生稳定输出功率的设备。它通常由一个稳压电源和一…

图解LeetCode——200. 岛屿数量

一、题目 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格…

还在用策略模式解决 if-else?Map+函数式接口方法才是YYDS!

需求 最近写了一个服务:根据优惠券的类型resourceType和编码resourceId来 查询 发放方式grantType和领取规则 实现方式: 根据优惠券类型resourceType -> 确定查询哪个数据表 根据编码resourceId -> 到对应的数据表里边查询优惠券的派发方式gran…

MAC卸载深信服edr

一、普通办法 1、首先在应用程序中找到终端防护中心,右键显示原项目。 2、全选删除所有文件,其中有一个sfavtray文件无法删除,这里先删除其他文件,不然底3步结束进程会自动恢复。 3、在活动监视器中查找进程名为sfavtray、edr的进…

DuiLib了解 XML使用和布局控制

文章目录 1、了解 XML使用和布局控制2、内外边距3、浮动4、占位符5、默认样式6、全局字体 1、了解 XML使用和布局控制 通过上一篇的学习我们可以制作一个简单的布局了,但是没有控件的窗口做再好的布局有什么用呀。赶紧找些素材,我们来做一个标准的 Wind…

什么是指标拆解树?指标拆解树怎么做数据分析?

指标拆解树能够通过对指标进行拆解,帮助分析定位影响指标的关键因素。 通过指标拆解树,您可以方便查看各个维度中各个成员对指标的贡献情况和占比,也可以将指标分解到一个或多个维度,分析每个维度对指标的影响。 指标拆解树的数据…

Spring Boot单体应用引入sleuth链路追踪

文章目录 前言一、问题模拟二、引入sleuth链路跟踪1、引入sleuth的maven依赖2、添加属性配置3、logback配置4、日志信息5、通过NewSpan注解声明新的Span 三、引入Sleuth链路跟踪的好处四、Sleuth概念说明五、Logback的MDC特性 前言 最近排查生产环境的异常时发现一个问题&…

Unreal 5 实现丧尸追逐攻击功能

要实现让丧尸能够智能的追逐玩家,我们需要用到ue封装的ai行为树来实现。基础相关的请查看:Unreal Engine 5.1 AI行为树基础入门,来学习一下如何使用ai行为树来实现一个简单的追逐功能。这一篇就是基于这个基础上进行了优化,实现了…

Docker专题系列之十一:基于Docker安装配置Nacos

一、查找镜像 使用如下命令查找镜像库中的资源 docker search nacos二、拉取镜像 拉取最新版本的nacos镜像 docker pull nacos/nacos-server三、查看镜像文件 docker images四、创建本地数据卷目录 mkdir /usr/rdc mkdir /usr/rdc/nacos mkdir /usr/rdc/nacos/logs五、创…

qt_多人聊天

服务器 .pro QT core gui network widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器头文件 #include <QTcpSocket> //客户端头文件 #include <QList> //客户端容器链表 #in…

【SpringMVC】SSM整合

1&#xff0c;SSM整合 前面我们已经把Mybatis、Spring和SpringMVC三个框架进行了学习&#xff0c;今天主要的内容就是把这三个框架整合在一起完成我们的业务功能开发&#xff0c;具体如何来整合&#xff0c;我们一步步来学习。 1. 流程分析 (1) 创建工程 创建一个Maven的web…

【IE】浏览器兼容问题IE

IE11浏览器 1.安装npm i babel-polyfill -S 2.main.js引入&#xff1a; import “babel-polyfill” 3.build/webpack.base.conf.js 更改 : entry: { app: [‘babel-polyfill’, ‘./src/main.js’] } 以上操作之后IE11依旧空白&#xff0c;报错 缺少标识符 axios版本V1.1.3 …

手把手教你搭建一个vue3+ts项目(超祥/必看)

目录 一、创建vite项目 二、启动vite项目 三、处理一些配置问题 四、增加工程化插件 1、安装sass 2、安装vue-router 3、安装pinia 4、安装element-plus 5、安装axios 6、设置路径别名&#xff0c;将相对路径改为绝对路径 一、创建vite项目 1、在一个文件夹下通…

React基础教程(二):React的基本使用

React基础教程(二)&#xff1a;React的基本使用 1、HelloReact 1.1 引入react基础依赖包 注意点&#xff1a;①必须要在②之前引入 <!-- 引入react核心库--><script src"../js/react.development.js"></script><!-- 引入react-dom&…

毕业论文里引用文献率为0%的解决小技巧

快要毕业了&#xff0c;带着伤感&#xff0c;大学生们已开始加紧完成论文的编写和毕业答辩&#xff0c;祝大家都可以顺利拿到学位证书和毕业证书。 前两天&#xff0c;有位同学找我&#xff0c;咨询如何解决毕业论文里&#xff0c;引用文献率为0%的问题。 我在知网上将该论文通…

flutter创建、安装扩展包、打包apk

1、创建APK项目 要在VSCode中创建一个Flutter应用程序&#xff0c;请按照以下步骤进行操作&#xff1a; 安装Flutter SDK&#xff1a;请确保你已经安装了Flutter SDK&#xff0c;并配置了Flutter的环境。你可以在Flutter的官方网站上找到安装和设置Flutter的详细说明。 安装V…

完美解决 RabbitMQ 可视化界面中 Overview 不显示图形的问题

&#x1f4a7; 记录一下今天遇到的 b u g \color{#FF1493}{记录一下今天遇到的bug} 记录一下今天遇到的bug&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 数据结构与算法…

VBA基础(宏编程)

VBA介绍&#xff1a; Visual Basic for Applications&#xff08;VBA&#xff09;是 VisualBasic 的一种宏语言&#xff0c;是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展 Windows 的应用程序功能&#xff0c;特别是Microsoft Office…

DolphinDB +机器学习,预测地震波形数据

1. 地震波形数据预测业务场景说明 在地震波形数据异常检测场景中&#xff0c;通常需要使用多种工具和方法来提高检测精度和鲁棒性。其中&#xff0c;FilterPicker 是一种常用的基于模板匹配的异常检测工具&#xff0c;可以实现地震波形数据的实时异常检测和定位。FilterPicker…

为什么看了那么多测试技术帖,自己都没有提升?

作为测试新手&#xff0c;最爱莫过于看各大牛发的技术贴&#xff0c;这篇很牛叉&#xff0c;那篇也很有道理&#xff0c;似乎自己看着看着也会成为高手。然而几年后&#xff0c;发现自己对专业知识的理解乱的很&#xff0c;里面更有很多自相矛盾的地方&#xff0c;这到底是哪里…