浅谈基于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背景图片透明叠加属性cross-fade简介及用法实例
Jan 08 HTML / CSS
CSS3制作圆角图片和椭圆形图片
Jul 08 HTML / CSS
animation和transition的区别
Oct 12 HTML / CSS
详解Html5微信支付爬坑之路
Jul 24 HTML / CSS
HTML4和HTML5之间除了相似以外的10个主要不同
Dec 13 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
Jan 06 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
Apr 24 HTML / CSS
HTML5中drawImage用法分析
Dec 01 HTML / CSS
HTML5+CSS3实现机器猫
Oct 17 HTML / CSS
五分钟学会HTML5的WebSocket协议
Nov 22 HTML / CSS
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
Jul 20 HTML / CSS
CSS3 制作的书本翻页特效
Apr 13 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 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
解析php二分法查找数组是否包含某一元素
2013/05/23 PHP
php事务处理实例详解
2014/07/11 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
在Django框架中编写Contact表单的教程
2015/07/17 Python
浅谈Python单向链表的实现
2015/12/24 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
Python 变量的创建过程详解
2019/09/02 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
项目资料员岗位职责
2013/12/10 职场文书
安全生产检讨书
2014/01/21 职场文书
同居协议书范本
2014/04/23 职场文书
2014年资料员工作总结
2014/11/18 职场文书
房屋租房协议书范本
2014/12/04 职场文书
Win11查看设备管理器
2022/04/19 数码科技
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS