浅谈基于Canvas的手绘风格图形库Rough.js


Posted in HTML / CSS onMarch 19, 2018

前言

推荐一个基于Canvas的手绘风格图形JS库。

Rough.js

Rough.js是一个轻量的(大约8k),基于Canvas的可以绘制出粗略的手绘风格库。

提供绘制线条、曲线、弧线、多边形、圆形和椭圆的基础能力,同时支持绘制SVG路径。

浅谈基于Canvas的手绘风格图形库Rough.js

Github:https://github.com/pshihn/rough

安装

下载链接:https://github.com/pshihn/rough/tree/master/dist

NPM

npm install --save roughjs

使用方法

浅谈基于Canvas的手绘风格图形库Rough.js

const rc = rough.canvas(document.getElementById('canvas'));
rc.rectangle(10, 10, 200, 200); // x, y, width, height

线条和椭圆

浅谈基于Canvas的手绘风格图形库Rough.js

rc.circle(80, 120, 50); // centerX, centerY, diameter
rc.ellipse(300, 100, 150, 80); // centerX, centerY, width, height
rc.line(80, 120, 300, 100); // x1, y1, x2, y2

填充

浅谈基于Canvas的手绘风格图形库Rough.js

rc.circle(50, 50, 80, { fill: 'red' }); // fill with red hachure
rc.rectangle(120, 15, 80, 80, { fill: 'red' });
rc.circle(50, 150, 80, {
  fill: "rgb(10,150,10)",
  fillWeight: 3 // thicker lines for hachure
});
rc.rectangle(220, 15, 80, 80, {
  fill: 'red',
  hachureAngle: 60, // angle of hachure,
  hachureGap: 8
});
rc.rectangle(120, 105, 80, 80, {
  fill: 'rgba(255,0,200,0.2)',
  fillStyle: 'solid' // solid fill
});

草绘风格

浅谈基于Canvas的手绘风格图形库Rough.js

rc.rectangle(15, 15, 80, 80, { roughness: 0.5, fill: 'red' });
rc.rectangle(120, 15, 80, 80, { roughness: 2.8, fill: 'blue' });
rc.rectangle(220, 15, 80, 80, { bowing: 6, stroke: 'green', strokeWidth: 3 });

SVG 路径

浅谈基于Canvas的手绘风格图形库Rough.js

rc.path('M80 80 A 45 45, 0, 0, 0, 125 125 L 125 80 Z', { fill: 'green' });
rc.path('M230 80 A 45 45, 0, 1, 0, 275 125 L 275 80 Z', { fill: 'purple' });
rc.path('M80 230 A 45 45, 0, 0, 1, 125 275 L 125 230 Z', { fill: 'red' });
rc.path('M230 230 A 45 45, 0, 1, 1, 275 275 L 275 230 Z', { fill: 'blue' });

简单的SVG路径

浅谈基于Canvas的手绘风格图形库Rough.js

结合Web Workers

如果在网页中有import Workly 这个Web Workers库,RoughJS会自动将所有的操作转移至web workers,来释放UI主线程。这个在使用RoughJS来创建复杂绘图(如地图)时非常有用。详细阅读相关内容 。

<script src="https://cdn.jsdelivr.net/gh/pshihn/workly/dist/workly.min.js"></script>
<script src="../../dist/rough.min.js"></script>

浅谈基于Canvas的手绘风格图形库Rough.js

例子

https://github.com/pshihn/rough/wiki/Examples

API及文档

https://github.com/pshihn/rough/wiki

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3中的元素过渡属性transition示例详解
Nov 30 HTML / CSS
利用CSS3实现自定义滚动条代码分享
Aug 18 HTML / CSS
纯CSS3+DIV实现小三角形边框效果的示例代码
Aug 03 HTML / CSS
如何使用localstorage代替cookie实现跨域共享数据问题
Apr 18 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
Jan 09 HTML / CSS
html5 worker 实例(一) 为什么测试不到效果
Jun 24 HTML / CSS
用HTML5制作数字时钟的教程
May 11 HTML / CSS
使用html5实现表格实现标题合并的实例代码
May 13 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
Nov 29 HTML / CSS
CSS预处理框架——Stylus
Apr 21 HTML / CSS
基于HTML十秒做出淘宝页面
Oct 24 HTML / CSS
CSS实现渐变色边框(Gradient borders)的5种方法
Mar 25 HTML / CSS
基于HTML5 WebGL的3D机房的示例
Mar 16 #HTML / CSS
Html5 APP中监听返回事件处理的方法示例
Mar 15 #HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
Mar 15 #HTML / CSS
微信html5页面调用第三方位置导航的示例
Mar 14 #HTML / CSS
微信端html5页面调用分享接口示例
Mar 14 #HTML / CSS
使用html5新特性轻松监听任何App自带返回键的示例
Mar 13 #HTML / CSS
配置H5的滚动条样式的示例代码
Mar 09 #HTML / CSS
You might like
php将数据库导出成excel的方法
2010/05/07 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
php实现webservice实例
2014/11/06 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
非常不错的一个javascript 类
2006/11/07 Javascript
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
python任务调度实例分析
2015/05/19 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
浅析Python 中几种字符串格式化方法及其比较
2019/07/02 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
pyspark给dataframe增加新的一列的实现示例
2020/04/24 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
村抢险救灾方案
2014/05/09 职场文书
党支部鉴定意见
2015/06/02 职场文书
APP界面设计技巧和注意事项
2022/04/29 杂记