Rough.js在Vue3中生成随机蒙德里安风格的抽象艺术

本文由ScriptEcho平台提供技术支持

项目地址:传送门

Mondrian风格艺术生成器:用Vue和RoughJS创造抽象艺术

应用场景

Mondrian风格艺术以其大胆的色彩块和简单的几何形状而闻名。这种风格可以应用于各种设计项目,包括海报、插图和网页设计。

代码基本功能

这段代码使用Vue和RoughJS库创建一个交互式Mondrian风格艺术生成器。它允许用户单击一个海报,生成由随机形状和颜色的块组成的抽象艺术品。

功能实现步骤及关键代码分析

  1. **创建框架:**首先,我们使用RoughJS库创建了一个600x700像素的框架。框架定义了艺术品的空间,并提供了一个边界。
javascript 复制代码
let frame = roughSVG.rectangle(0, 0, 600, 700, {
  strokeWeight: 5,
})
  1. **定义样式和参数:**我们定义了一组颜色、样式、尺寸和角度,用于生成块。这些参数将随机组合,创建各种各样的块。
javascript 复制代码
let colors = ['#C0C0C0', '#E91B24', '#FFD207', '#0000FF', '#000000']
let styles = ['hachure', 'zigzag', 'cross-hatch', 'dashed']
let sizes = [40, 80, 120, 160, 200]
let angles = [45, 70, 120, 190, 240]
  1. **生成块:**我们创建了一个函数generateBlocks(),用于生成块并将其添加到海报中。该函数循环遍历框架,随机生成每个块的尺寸、颜色、样式和角度。
javascript 复制代码
function generateBlocks() {
  let y = 0
  let x = 0
  let width = 600
  let height = 700
  let currHeight, currWidth, num

  while (y < height) {
    x = 0
    while (x < width) {
      block = roughSVG.rectangle(x, y, currWidth, currHeight, {
        fill: colors[Math.floor(Math.random() * colors.length)],
        strokeWidth: 2,
        bowing: 1.8,
        hachureAngle: angles[Math.floor(Math.random() * colors.length)],
      })
      svg.appendChild(block)
      x = x + currWidth
      currWidth = sizes[Math.floor(Math.random() * colors.length)]
    }
    y = y + currHeight
    currHeight = sizes[Math.floor(Math.random() * colors.length)]
  }
}
  1. **事件监听:**我们添加一个事件监听器,当用户单击海报时,它将清除海报并生成新的块。
javascript 复制代码
poster.addEventListener('click', () => {
  poster.innerHTML = ''
  generateBlocks()
})

总结与展望

开发这段代码是一个有趣且有教育意义的经历。我了解了RoughJS库的强大功能,以及如何使用Vue来创建交互式应用程序。

未来,我计划扩展此代码以包含更多功能,例如:

  • 保存和加载艺术品
  • 调整块的尺寸、颜色和样式
  • 添加动画效果

我相信这个代码可以成为一个有价值的工具,用于创建独特的和引人注目的Mondrian风格艺术品。

更多组件:


获取更多Echos

本文由ScriptEcho平台提供技术支持

项目地址:传送门

微信搜索ScriptEcho了解更多

相关推荐
航Hang*2 分钟前
WEBSTORM前端 —— 第2章:CSS —— 第2节:文字控制属性与CSS特性
前端·css·css3·html5·webstorm
小桥风满袖4 分钟前
Three.js-硬要自学系列18 (模型边界线、几何体顶点颜色、网格模型颜色渐变)
前端·css·three.js
JHC0000004 分钟前
DrissionPage 请求一次换一个代理(不重启chrome)
前端·chrome
David凉宸5 分钟前
视频融合 hls流如何对接
前端·音视频开发
萌萌哒草头将军6 分钟前
🚀🚀🚀 神了!RedwoodJS 轻松碾压 NextJS,成了我的最爱❤️
前端·react.js·全栈
CF14年老兵8 分钟前
当 JavaScript 遇上 Rust/Go:一场 “速度诱惑” 下的生态保卫战
前端·javascript·rust
David凉宸8 分钟前
vue手写日历
前端·javascript
itsOli13 分钟前
(25)性能优化和项目上线 | Vue.js 项目实战: 移动端“旅游网站”开发
前端·javascript·vue.js
梨啊梨b13 分钟前
使用CSS混合模式轻松实现Mp4视频透明背景
前端
前端九哥14 分钟前
🤡什么鬼?两行代码就能适应任何屏幕?
前端