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了解更多

相关推荐
百万蹄蹄向前冲4 分钟前
Trae分析Phaser.js游戏《洋葱头捡星星》
前端·游戏开发·trae
朝阳58142 分钟前
在浏览器端使用 xml2js 遇到的报错及解决方法
前端
GIS之路1 小时前
GeoTools 读取影像元数据
前端
ssshooter1 小时前
VSCode 自带的 TS 版本可能跟项目TS 版本不一样
前端·面试·typescript
Jerry2 小时前
Jetpack Compose 中的状态
前端
dae bal3 小时前
关于RSA和AES加密
前端·vue.js
柳杉3 小时前
使用three.js搭建3d隧道监测-2
前端·javascript·数据可视化
lynn8570_blog3 小时前
低端设备加载webp ANR
前端·算法
LKAI.3 小时前
传统方式部署(RuoYi-Cloud)微服务
java·linux·前端·后端·微服务·node.js·ruoyi
刺客-Andy4 小时前
React 第七十节 Router中matchRoutes的使用详解及注意事项
前端·javascript·react.js