问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何利用js获取canvas里的图形

发布网友 发布时间:2022-05-07 22:52

我来回答

2个回答

懂视网 时间:2022-05-12 05:43

这次给大家带来Canvas的手绘风格图形库Rough.js,使用Canvas的手绘风格图形库Rough.js的注意事项有哪些,下面就是实战案例,一起来看一下。

前言

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

Rough.js

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

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

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

安装

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

NPM

npm install --save roughjs

使用方法

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

线条和椭圆

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

填充

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
});

草绘风格

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 路径

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路径

结合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>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

max-width和min-width的使用技巧

text-align如何实现两端对齐

热心网友 时间:2022-05-12 02:51

获取坐标,将坐标push进一个储存数组,下次需要使用的时候调用数组,取出数据,画线条就行了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁能给个单机版的风云之雄霸天下啊?? 求风云雄霸天下PC单机游戏WIN7版 雄霸天下任务指南 开心网001老房子卖了以后家具还有吗? 为什么001开心网买房子组件删除仓库里的东西都没了 请教一下,开心001的开心庄园里面的建材有好多富余的的 除了5元一个卖... 开心网001小号怎么给大号送房子? 开心网001多少级能送别人房子?多少级能接受别人给的房子? 开心网001果实或家具能送人吗 开心网(kaixin001)怎么买外地房子? 天津大学 临沂大学哪个好? layaair怎么用canvas 画图 山东大学有哪些 临沂大学怎么样 临沂大学怎么样?与南京大学比较谁好点? 临沂大学是211大学还是985大学 广州市番禺区南村镇汉溪大道哪有有民生银行营业厅 vue里面怎么封装一个canvas 广州民生银行营业厅周六能开通手机银行嘛? vue里面怎么获取canvas的画笔 这样子是报错啊。。 最近奥园广场中国民生银行营业厅 vue脚手架中怎么添加canvas插件 广州番禺哪里有民生银行 请问番禺市桥哪里有民生银行 中国民生银行(广州市番禺区市桥街) 如何评价莎士比亚的作品? 莎士比亚笔下的人物形象的评价 莎士比亚典型人物形象点评 求一张罪恶都市中文地图! BCR百汇实力好不好? 2022年211护理有哪些学校有调剂名额 临沂大学对哪个学校可以保研? 山东省的大学哪些有音乐系?综合类的 有《瞎子我原来我很爱你》的全文和番外嘛? 衾何以堪/瞎子,原来我很爱你小说免费下载全文 求小说(瞎子,原来我很爱你) 两个人都属马能结婚吗? 两个90年属马结婚好吗 瞎子,原来我爱你。全本加番外 生肖属马的两个人可以结婚吗? 2个属马的人结婚好吗 两个人都属马可以结婚吗? 两个人都属马结婚相刑吗? 两个属马的可以走到一起结婚吗? 属马和属马的结婚好不好 两个人属马的在一起适合吗 两个都是属马(1990年出生的)是不是不能结婚? 两个属马的结婚好吗19900806和19900819 两个属马的人结婚命运如何 这个是什么彩瓷碗?有收藏价值吗?谢谢