综合 LeaferJS:绚丽多彩的 HTML5 Canvas 2D 图形渲染引擎

2024-11-18 16:29:20 +0800 CST views 642

LeaferJS:绚丽多彩的 HTML5 Canvas 2D 图形渲染引擎

LeaferJS官网

概览

Leafer UI 是基于 Leafer 开发的一套丰富多彩的 UI 绘图和交互框架,能够与 AI 绘图和生成界面相结合,表现力强大、性能优越。它提供了众多 UI 绘图元素和开箱即用的功能,如自动布局、图形编辑、SVG 导出,方便与 Figma、Sketch 等工具进行数据交换,并为跨平台开发提供了统一的交互事件(如拖拽、旋转、缩放手势等)。适用于高效绘图、组态和图形图像编辑软件,未来将支持可视化开发网页、应用、游戏和动画。

📗 深入了解 LeaferJS

快速安装

🚀 想立即使用?请安装 leafer-ui,开始探索之旅。

  • 场景版:推荐安装 leafer-editor,集成图形编辑器相关插件,省心省力。
  • 轻量版:对于单纯绘图的需求,推荐安装 leafer-draw(49KB min+gzip)。

阅读顺序

  1. 🚀 第 1 本书:快速上手,轻松入门 😎
  2. 🍉 第 2 本书:参考手册,详解元素、属性、方法、事件和类库的使用
  3. 🍊 第 3 本书:插件中心,了解官方及社区插件

我们还提供了不断更新的场景示例供学习,您可以通过顶部导航栏快速切换。

创建应用

Leafer 实例采用树状结构,Leafer 为根节点,提供管理功能,可以添加子元素,通过 Group / Box 层层嵌套,构成复杂的渲染树。

创建固定宽高的应用

import { Leafer } from 'leafer-ui';

new Leafer({
    view: 'id', // 支持 window、div、canvas 标签对象,id字符串时不加 # 号
    width: 600, // 不能设置为 0,否则会变为自动布局
    height: 600
});

创建自适应布局的应用

当画布的父节点尺寸改变后会自动调整:

import { Leafer } from 'leafer-ui';

new Leafer({ view: window }); // 等同于 { view: window, top: 0, right: 0, bottom: 0, left: 0 }

高效绘图

Leafer 提供易于上手的自动布局功能,支持按中心点绘制,便于创建海报和分享。提供渐变、阴影、遮罩等功能,能轻松实现专业设计效果。此外,强大的 Pen 工具让绘制路径和元素组合如绘画般简单。

import { Leafer, Pen } from 'leafer-ui';

const leafer = new Leafer({ view: window });
const pen = new Pen();

pen.setStyle({ fill: { type: 'radial', stops: [{ offset: 0, color: '#FF4B4B' }, { offset: 1, color: '#FEB027' }] } });
pen.roundRect(0, 0, 100, 100, 30);
pen.setStyle({ y: -5, fill: 'white' });
pen.moveTo(40, 30).bezierCurveTo(70, 30, 90, 60, 63, 80).quadraticCurveTo(50, 88, 40, 80).bezierCurveTo(10, 60, 50, 40, 40, 30);

leafer.add(pen);

UI 交互

  • 组态、流程图:提供丰富的箭头样式和元素状态,结合用户的连线插件,快速搭建组态和流程图软件。
  • 图片裁剪:支持裁剪遮罩、手机端手指缩放和旋转,简单代码即可实现图片裁剪工具。

总结

LeaferJS 致力于实现简洁、开放、现代化的 UI 绘图语言标准,具备丰富表现力,易于 AI 理解,便于人类可视化使用。它为数字化产品开发提供跨平台、轻量化、高性能的运行时支持,助力高效绘图和组态开发。

images

推荐文章

Go 中的单例模式
2024-11-17 21:23:29 +0800 CST
php内置函数除法取整和取余数
2024-11-19 10:11:51 +0800 CST
Nginx 防盗链配置
2024-11-19 07:52:58 +0800 CST
Vue3中如何实现国际化(i18n)?
2024-11-19 06:35:21 +0800 CST
在 Rust 中使用 OpenCV 进行绘图
2024-11-19 06:58:07 +0800 CST
php 统一接受回调的方案
2024-11-19 03:21:07 +0800 CST
支付轮询打赏系统介绍
2024-11-18 16:40:31 +0800 CST
全栈工程师的技术栈
2024-11-19 10:13:20 +0800 CST
mysql删除重复数据
2024-11-19 03:19:52 +0800 CST
浅谈CSRF攻击
2024-11-18 09:45:14 +0800 CST
Roop是一款免费开源的AI换脸工具
2024-11-19 08:31:01 +0800 CST
PHP 微信红包算法
2024-11-17 22:45:34 +0800 CST
Vue3中哪些API被废弃了?
2024-11-17 04:17:22 +0800 CST
在JavaScript中实现队列
2024-11-19 01:38:36 +0800 CST
Vue 3 中的 Watch 实现及最佳实践
2024-11-18 22:18:40 +0800 CST
Golang 随机公平库 satmihir/fair
2024-11-19 03:28:37 +0800 CST
go发送邮件代码
2024-11-18 18:30:31 +0800 CST
一些高质量的Mac软件资源网站
2024-11-19 08:16:01 +0800 CST
地图标注管理系统
2024-11-19 09:14:52 +0800 CST
Rust 并发执行异步操作
2024-11-18 13:32:18 +0800 CST
程序员茄子在线接单