浅谈基于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 给背景设置渐变色的方法
Sep 12 HTML / CSS
浏览器实现移动端高性能css3动画(开启gpu加速)
Dec 23 HTML / CSS
CSS3感应鼠标的背景闪烁和图片缩放动画效果
May 14 HTML / CSS
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
Mar 15 HTML / CSS
webapp字号大小跟随系统字号大小缩放的示例代码
Dec 26 HTML / CSS
canvas像素画板的实现代码
Nov 21 HTML / CSS
IE支持HTML5的解决方法
Oct 20 HTML / CSS
css 如何让背景图片拉伸填充避免重复显示
Jul 11 HTML / CSS
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
Jul 19 HTML / CSS
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
Dec 16 HTML / CSS
详解window.open被浏览器拦截的解决方案
Jul 18 HTML / CSS
css弧边选项卡的项目实践
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
PHP的伪随机数与真随机数详解
2015/05/27 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
js保存当前路径(cookies记录)
2010/12/14 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
JavaScript中this详解
2015/09/01 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
Python实现的弹球小游戏示例
2017/08/01 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
2020/07/13 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
售后专员岗位职责
2013/12/08 职场文书
搞笑征婚广告词
2014/03/17 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书