浅谈基于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仿造window7的开始菜单
Jun 17 HTML / CSS
css3 线性渐变和径向渐变示例附图
Apr 08 HTML / CSS
老生常谈CSS中的长度单位
Jun 27 HTML / CSS
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
Nov 16 HTML / CSS
canvas烟花特效锦集
Jan 17 HTML / CSS
html5中地理位置定位api接口开发应用小结
Jan 04 HTML / CSS
html5指南-3.如何实现html元素拖拽功能
Jan 07 HTML / CSS
用HTML5制作数字时钟的教程
May 11 HTML / CSS
实例讲解HTML5的meta标签的一些应用
Dec 08 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
Nov 10 HTML / CSS
html+css 实现简易导航栏功能
Apr 07 HTML / CSS
html5移动端禁止长按图片保存的实现
Apr 20 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安装为Apache DSO
2006/10/09 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
财务主管自我鉴定
2014/01/17 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
公司活动方案范文
2014/03/06 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
六查六看剖析材料
2014/10/06 职场文书
工资证明范本
2015/06/12 职场文书
实现GO语言对数组切片去重
2022/04/20 Golang