Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

usb-paint

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

usb-paint

A universal, simple, and beautiful hand-drawn style painting tool, USB-Paint. It can be introduced and used in any front-end framework or page.

  • 1.0.3
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
120
increased by62.16%
Maintainers
1
Weekly downloads
 
Created
Source

English | 简体中文

USB-Paint

一个通用的(Universal)、简洁的(Simple)、美观的(Beautiful) 手绘风格的绘画工具组件—USB-Paint。 你也可以将它理解为一个即插即用的绘画面板工具,就像无处不在的USB接口一样,任何前端项目(原生html、Vue、React、Svelte、Angular)都可以快速引入使用。

特性

  • Universal:支持多种前端框架,如原生html、Vue、React、Svelte、Angular
  • Simple:简洁的页面结构,没有复杂的样式,没有复杂的逻辑
  • Beautiful:美观的UI设计,支持多颜色/样式配置,支持自定义
  • 手绘风格
  • 支持多种画笔工具,画笔、橡皮擦、清除、导出图片等

安装 & 使用

方法一:使用 npm/yarn(推荐)

安装

npm install usb-paint
yarn add usb-paint

使用

注意:在框架中使用时,需要确保dom已经加载了才能使用,比如在Vue中需要中onMounted或者之后的生命周期中实例化使用

import USBPaint from "usb-paint";

new USBPaint({
  target: document.querySelector("#root"),
});

方法二:使用 CDN 直接插入到 HTML

<script src="https://cdn.jsdelivr.net/npm/usb-paint@latest/dist/usbpaint.iife.js" type="text/javascript"></script>
<script>
  let a = new USBPaint({
    target: document.querySelector("#root"),
  });
</script>
可用的 CDN:

参数详情

参数案例

import USBPaint from "usb-paint";

new USBPaint({
  target: document.querySelector("#root"),
  lineOptions: {
    lineWidth: 8,
    lineColor: "red",
    lineAlpha: 1,
    lineSmooth: 1,
    lineThin: 0.6,
    lineStream: 1,
    lineStart: 0,
    lineEnd: 80,
  },
  showTools: true,
  toolsConfig: {
    tools: "all", // ["eraser", "paint", "trash", "export" ],
    position: {
      x: 400,
      y: 400,
      direction: "column", // column row
    },
    iconsConfig: {
      size: 20,
      width: 0.5,
      color: "red",
      fill: "black",
    },
    backgroud: {
      color: "blue",
      border: "1px solid red",
      radius: 10,
    },
  },
  background: "black",
});

一级参数

参数必须类型默认值说明
targetHTMLElementbody元素目标容器,可以是DOM元素,也可以是CSS选择器
lineOptionsLineOptionsType(下有详情)画笔线条配置
showToolsbooleanfalse是否展示工具栏
toolsConfigToolsConfigType(下有详情)showTools为true时生效,展示的工具栏配置
backgroundstring-默认透明颜色,可以传入Hex/RGB/HSL/HSB/颜色名(如red)的颜色值

二级参数

LineOptionsType

参数必须类型默认值说明
lineWidthnumber4画笔线条宽度
lineColorstring#000画笔线条颜色,可以传入Hex/RGB/HSL/HSB/颜色名(如red)的颜色值
lineAlphanumber1画笔线条透明度
lineSmoothnumber1画笔线条边缘的柔化程度
lineThinnumber0.6画笔压力对笔画大小的影响。
lineStreamnumber1简化笔画的程度。
lineStartnumber0~100线路起点的锥度。
lineEndnumber0~100线路末端的锥度选项。

ToolsConfigType

参数必须类型默认值说明
toolsstring/ arrayall工具栏工具,可以传入["eraser", "paint", "trash", "export"]中任意几个的组合,"[]"不展示工具栏,"all"(全部)
positionstring/AxisTypetop工具栏位置,可以传入"left"/"right"/"top"/"bottom",也可以传AxisType定位数据(下面详解)
iconsConfigobject-工具栏图标配置
backgroudobject-工具栏背景配置

三级参数

toolsConfig.position(AxisType)

参数必须类型默认值说明
xnumber-横坐标px
ynumber-纵坐标px
directionstring-排列方向 row/column

toolsConfig.iconsConfig

参数必须类型默认值说明
sizenumber20图标大小px
widthnumber1.25图标线条宽度
colorstring#000图标线条颜色,可以传入Hex/RGB/HSL/HSB/颜色名(如red)的颜色值
fillstringnone图标内部填充颜色,可以传入Hex/RGB/HSL/HSB/颜色名(如red)的颜色值,默认"none",不填充

toolsConfig.backgroud

参数必须类型默认值说明
colorstring#fff背景颜色,可以传入Hex/RGB/HSL/HSB/颜色名(如red)的颜色值
borderstring1px solid rgba(0,0,0,0.1)边框(css)
radiusnumber10圆角

事件调用

事件名说明返回数据
exportToImage导出图片数据base64
eraserTool橡皮擦-
freeDrawTool绘画-
clearTool清除-

事件调用案例

import USBPaint from "usb-paint";

const usbPaint = new USBPaint();
// 主动触发导出图片
usbPaint.exportToImage();
// 主动触发使用橡皮擦功能
usbPaint.eraserTool();
// 主动触发使用绘画功能
usbPaint.freeDrawTool();
// 主动触发使用画布清除功能
usbPaint.clearTool();

Keywords

FAQs

Package last updated on 18 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc