浅谈基于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 background-clip,background-origin和border-image教程
Jan 27 HTML / CSS
CSS3属性background-size使用指南
Dec 09 HTML / CSS
CSS3 text shadow字体阴影效果
Jan 08 HTML / CSS
CSS3实现内凹圆角的实例代码
May 04 HTML / CSS
使用 CSS3 中@media 实现网页自适应的示例代码
Mar 24 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
Jun 22 HTML / CSS
基于HTML5的WebSocket的实例代码
Aug 15 HTML / CSS
用HTML5的canvas实现一个炫酷时钟效果
May 20 HTML / CSS
使用canvas一步步实现图片打码功能的方法
Jun 17 HTML / CSS
AmazeUI框架搭建的方法步骤(图文)
Aug 17 HTML / CSS
HTML中的表单Form实现居中效果
May 25 HTML / CSS
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
May 07 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
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
Vue-Router模式和钩子的用法
2018/02/28 Javascript
react实现换肤功能的示例代码
2018/08/14 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
IE9下html5初试小刀
2010/09/21 HTML / CSS
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
开学典礼演讲稿
2014/05/23 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
安全横幅标语
2014/06/09 职场文书
叶问观后感
2015/06/15 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
详细分析PHP7与PHP5区别
2021/06/26 PHP
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL