最新要闻
- 焦点快报!濒死恒星演化成超新星前一幕被韦伯捕捉:壮观至极!
- 全球热议:OpenAI还在烧钱 但开发者已经利用GPT挣钱了:还是国产的
- FIFA官宣2026世界杯改制:48队分为12个组 赛事总场次增至104场
- 环球即时:合肥发布新能源汽车消费补贴政策:最高补贴5000元
- 环球动态:真不用羡慕油车了!特斯拉V4超级充电桩落地:最高功率350kW
- 全球微速讯:智动力:目前暂未涉及6G通信网络相关领域
- 焦点速讯:你支持吗?快递不告而放或最高可罚3万 直接放菜鸟也不接受?
- 【天天速看料】哪吒汽车跟进90天保价 哪吒S 1160增程小版限时17.98万元
- 林依晨和郑元畅在一起过吗?林依晨和郑元畅参加的综艺节目叫什么?
- 泰坦尼克号是真实的故事吗?泰坦尼克号的男女主角叫什么?
- 观点:成人崩溃就在一瞬间 外卖小哥酒后误上高速 电量跑光痛哭不止
- 全球今头条!生产环境触目惊心!汕头知名橄榄菜企业被连夜查处:线上平台火速下架
- 播报:全周期订单数突破35万!魅族20系列无界超前订圆满结束
- 湖南邵阳疑似挖出龙化石?当地回应:或为天然石头
- 世界视点!Model Y行驶中刹车变硬 车主:售后说是常态化事情
- 观点:报复性消费来了:我国网上零售额月均破万亿元
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
fabric使用
在vue项目中使用
(资料图)
安装
npm install fabric(或yarn add fabric)
main.js中引入
import fabric from "fabric"Vue.use(fabric);
使用
一、在页面中声明画布var canvas =new fabric.Canvas("canvas");二、绘制图形1、规则图形
例:
var rect = new fabric.Rect({ left:100,//距离画布左侧的距离,单位是像素 top:100,//距离画布上边的距离 fill:"red",//填充的颜色 width:30,//方形的宽度 height:30//方形的高度 });//添加图形至画布canvas.add(rect);
Fabric提供了7种基本的对象类
- fabric.Circle //圆形
- fabric.Ellipse //椭圆
- fabric.Line //线
- fabric.Polygon //多边形
- fabric.Polyline //交叉线 折线
- fabric.Rect //矩形
- fabric.Triangle//三角形
这些实例都继承fabric.Object,如果你想画一些图形,并且需要一些公共方法。这时候就可以在fabric.Object上定义一个方法,来让子类继续。
比如我们定一个方法getAngleInRadians 方法在fabric.Object对象上:
fabric.Object.prototype.getAngleInRadians = function() { return this.get("angle") / 180 * Math.PI;}; var rect = new fabric.Rect({ angle: 45 });rect.getAngleInRadians(); // 0.785... var circle = new fabric.Circle({ angle: 30, radius: 10 });circle.getAngleInRadians(); // 0.523... circle instanceof fabric.Circle; // truecircle instanceof fabric.Object; // true
2、绘制不规则图形
使用路径绘图:用点和线的移动的方式进行绘图。通过对 线、曲线、弧的应用绘制非常复杂的图形。
在fabric.Path( )方法中,“M”代表“移动”命令,这个“M 00” 代表把画笔移动到(0,0)点坐标。
“L”代表“线”,“L 200 100 ”的意思是使用钢笔画一条线,从(0,0)坐标画到(200,100)坐标。 “z” 代表让图形闭合路径。
画好三角形后,我们可以用set( )方法对三角形的位置、颜色、角度、透明度等属性进行设置。
var path = new fabric.Path("M 0 0 L 200 100 L 170 200 z");path.set({ left: 120, top: 120,fill:"red" });canvas.add(path);
三、对图片的操作
HTML插入图片
<script> var canvas = new fabric.Canvas("canvas");//声明画布 var imgElement = document.getElementById("img");//声明我们的图片 var imgInstance = new fabric.Image(imgElement,{ //设置图片位置和样式 left:100, top:100, width:200, height:100, angle:30//设置图形顺时针旋转角度 }); canvas.add(imgInstance);//加入到canvas中</script>
JavaScript插入图片
var canvas = new fabric.Canvas("canvas"); fabric.Image.fromURL("./2.png", function(oImg) { oImg.scale(0.1);//图片缩小10倍 canvas.add(oImg); });
四、交互
对画布的交互
canvas.add(imgInstance);//加入到canvas中 var canvas = new fabric.Canvas("canvas"); canvas.on("mouse:down", function(options) { console.log(options.e.clientX, options.e.clientY) })
注:常用监听事件如下:
mouse:down
:鼠标按下时mouse:move
:鼠标移动时mouse:up
:鼠标抬起时
对画布上对象的操作
var canvas = new fabric.Canvas("canvas"); var rect = new fabric.Rect({ width: 100, height: 50, fill: "green" }); rect.on("selected", function() {//选中监听事件 console.log("selected a rectangle"); }); var circle = new fabric.Circle({ radius: 75, fill: "blue" }); circle.on("selected", function() { console.log("selected a circle"); }); canvas.add(rect); canvas.add(circle);
注:常用监听事件如下:
after:render
:画布重绘后object:selected
:对象被选中object:moving
:对象移动object:rotating
:对象被旋转object:added
:对象被加入object:removed
:对象被移除
五、组合
new fabric.Group(): 接受两个参数:要组合对象名称组成的数组、组合到一起的对象的共同属性。
var canvas = new fabric.Canvas("canvas");var circle = new fabric.Circle({//绘制圆形 radius: 100, fill: "#f00", scaleY: 0.5, originX: "center",//调整中心点的X轴坐标 originY: "center"//调整中心点的Y轴坐标});var text = new fabric.Text("Hello World", {//绘制文本 fontSize: 30, originX: "center", originY: "center"})//进行组合var group = new fabric.Group([circle, text], { left: 150, top: 100, angle: 10})canvas.add(group);
六、序列化与反序列化
序列化(将画布图形转为JSON数据)
canvas.toJSON()
var canvas = new fabric.Canvas("canvas");var rect = new fabric.Rect({ width: 100, height: 100, fill: "red"});canvas.add(rect);console.log(JSON.stringify(canvas.toJSON()));
反序列化(将JSON数据转为画布图形)
canvas.loadFromJSON(JSONDATA)
canvas.loadFromJSON(getcanvasJson)
转为SVG图片
canvas.toSVG();
保存为png图片
var canvas = document.getElementById("canvas")var imgSrc = canvas.toDataURL("png");// 保存当前画布为png图片 save() { var canvas = document.getElementById("canvas") var imgSrc = canvas.toDataURL("png"); imgSrc = imgSrc.replace("image/png", "image/octet-stream"); console.log(imgSrc,"imgSrc"); // 下载后的文件名,可自由指定 var filename = "drawingboard_" + (new Date()).getTime() + "." + "png"; this.saveFile(imgSrc, filename); }, // 保存为文件 saveFile(data, filename) { var save_link = document.createElement("a"); save_link.href = data; save_link.download = filename; var event = document.createEvent("MouseEvents"); event.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); save_link.dispatchEvent(event); },
关键词:
-
fabric使用
在vue项目中使用安装npminstallfabric(或yarnaddfabric)main js中引入importfabricfrom& 39;fabric& 39;Vue
来源: 易基因:染色质免疫共沉淀测序(ChIP-seq)的数据挖掘思路 |干货系列
fabric使用
当前简讯:企业微信对接openai实现chatgpt3.5聊天机器人
焦点快报!濒死恒星演化成超新星前一幕被韦伯捕捉:壮观至极!
全球热议:OpenAI还在烧钱 但开发者已经利用GPT挣钱了:还是国产的
FIFA官宣2026世界杯改制:48队分为12个组 赛事总场次增至104场
环球即时:合肥发布新能源汽车消费补贴政策:最高补贴5000元
环球动态:真不用羡慕油车了!特斯拉V4超级充电桩落地:最高功率350kW
全球快资讯:VMware安装虚拟机时提示错误"Failed to install the hcmon driver."解决办法
环球即时看!C# || 批量翻译工具 || 百度翻译api || 读取.cs文件内容 || 正则表达式筛选文件
这是一篇纯讲SQL语句优化的文章!!!| 博学谷狂野架构师
消息!前端架构工作
【全球速看料】Linux进程通信 | 管道与FIFO
全球微速讯:智动力:目前暂未涉及6G通信网络相关领域
焦点速讯:你支持吗?快递不告而放或最高可罚3万 直接放菜鸟也不接受?
【天天速看料】哪吒汽车跟进90天保价 哪吒S 1160增程小版限时17.98万元
林依晨和郑元畅在一起过吗?林依晨和郑元畅参加的综艺节目叫什么?
泰坦尼克号是真实的故事吗?泰坦尼克号的男女主角叫什么?
前锋燃气灶质量怎么样?燃气灶十大品牌排行榜
iis是什么软件?iis在哪里打开?
aspx文件是什么?aspx文件怎么打开?
Prime95烤机教程
观点:成人崩溃就在一瞬间 外卖小哥酒后误上高速 电量跑光痛哭不止
全球今头条!生产环境触目惊心!汕头知名橄榄菜企业被连夜查处:线上平台火速下架
播报:全周期订单数突破35万!魅族20系列无界超前订圆满结束
湖南邵阳疑似挖出龙化石?当地回应:或为天然石头
世界视点!Model Y行驶中刹车变硬 车主:售后说是常态化事情
GPT-4上线:史上最强大多模态语言模型,堪称最强人工智能,目前OpenAI付费升级GPT-4平台已崩溃
观点:报复性消费来了:我国网上零售额月均破万亿元
16岁女孩将挑战珠峰 父亲众筹50万 回应来了:女儿想法
奔驰EQC刚买半年驱动电机就被烧毁 车主质疑4S店故意欺诈
环球新动态:电机品牌排行榜_电机品牌
环球速递!文盘Rust -- 安全连接 TiDB/Mysql
自从用了 EasyExcel,导入导出 Excel 更简单了!
浅谈var,let,const
今日最新!Maven学习笔记3:在idea中使用Maven
全球播报:玩家最喜欢的复古游戏TOP5:《俄罗斯方块》排第二
环球快资讯:程序员也危险了!GPT-4十秒即可生成一个网站
焦点消息!ChatGPT升级为GPT-4 会看图懂幽默 细思极恐
充电慢、续航差、反馈无门!bZ3X首批车主公开致信广汽丰田董事长
不接董事长电话1次罚1万元 公司回应:合不合法你说了不算
项目构建node-sass源码报错 SyntaxError:Unexpectedtoken"?"
前端设计模式——命令模式
【热闻】保时捷去年净赚499亿元:国人给力 中国连续八年为最大市场
打工几年就能买北京四合院?新剧《心想事成》开播引热议
男子辞职摆摊拍照 1月内激增14家同行 建议大家好好上班
快资讯丨Meta宣布再裁员上万人 连HR都裁了!扎克伯格给出理由
【世界新视野】韩国SBS电视台回应剪辑杨紫琼感言:未刻意针对女性
焦点报道:3月15日热股前瞻:7股突发利好
今日报丨建议收藏chatGPT说的Ubuntu下常用网络命令合集
【天天热闻】315来临!消费者起诉东方甄选 官方:我们也被供应商骗了
环球即时看!网文连载十余年被网友举报 1万多章还没结尾:作者回应了
每日快看:2022年新能源汽车投诉量增长62.84%:行驶中突然熄火、漏油成热点
世界信息:高速免费!2023年清明节放假通知来了:1天假 不调休
每日看点!苹果为何不做电视?真实原因揭开
2023年安卓之光!小米13 Ultra曝光:支持可变光圈
读Java性能权威指南(第2版)笔记17_垃圾回收D
刚刚,拜登最新表态!两大重磅降临,欧美多头集体沸腾!危机一闪而过?这家巨头突然"捅刀"
拒绝卡脖子 我国掌握量子计算核心技术:低温接近绝对零度
4家汽车公司明确不打价格战 定位豪华品牌:特斯拉比亚迪看笑
如何用好免费的chatGPT
全球观焦点:算法模板总结 1
【独家焦点】预算3000元 找老鸟装了台12代U ITX小主机:这配置你看如何?
天天视讯!AMD最强核显跑分逆天!竟然逼平GTX 1650、RX 480
热点在线丨女演员被困五星级酒店厕所超3小时!酒店回应:属于特例
头条焦点:《速度与激情10》新海报发布:范迪塞尔携众家人再度狂飙
深圳带奶茶跑腿回港火了:一趟就能赚数百元
丙二醇的功效_丙二醇的功效与作用
今日热讯:《consul 简易上手指南》
每日简讯:《碟中谍7:致命清算》首张海报:阿汤哥悬崖飞车冲上云霄!
【快播报】CPU突然变慢、Adobe异常崩溃:NVIDIA终于出手
【天天播资讯】动物园棕熊能懂人话 被质疑是人假扮:回应确实是真熊
第三十一天 面向对象编程的基础
每日观点:c++11多线程入门<学习记录>
当前通讯!day03-分析SpringBoot底层机制
关于AWS-S3-Bucket-Console-Web控制页面上的Creation date与命令行-API方式如何获取到真正的CreationDate
天天速看:深圳居住登记信息服务_深圳市居住登记服务平台
焦点播报:游客为拍照不听劝阻喂狐狸吃面包 无视劝阻!会危害动物
Vue——mergeOptions【四】
播报:院线票房止步9000万:《中国乒乓》官宣3月17日登陆线上平台
华硕发布新款迷你主机:高配i7-13700H、配备雷电4
环球热点评!.NET中比肩System.Text.Json序列化反序列化组件MessagePack
路飞-项目上线
今亮点!分布式架构-可观测性-事件日志
【全球热闻】教你用Python画个可爱的皮卡丘!(附完整源码)
每日资讯:Educational Codeforces Round 123 (Rated for Div. 2)
网传梅西要来 黄牛提前卖票!阿根廷国家足球队辟谣“中国行”
【新要闻】315白皮书:价格刺客成消费者年度最关注现象、购物平台为年度被投诉最多行业
环球时讯:西安机场为首次坐飞机旅客安排指引服务:佩戴专属手环 全程有人引导
速度10倍于普通U盘!联想小新原厂颗粒固态U盘发售:USB 3.2双口
12万买C6?想多了!雪铁龙都是套路:想提车先交29万
记录--你不知道的forEach函数
智能勘探 | AIRIOT智慧油田管理解决方案
环球聚焦:NOI春季测试游记
微贺卡
《黑暗荣耀2》热播!演员透露拍摄细节:剧里的蛇是真蛇
82版《西游记》编剧戴英禄逝世 六小龄童发文悼念
当前关注:理想汽车L8首批车主调研:300名中车主开BBA的最多
环球播报:国产车崛起 豪华车丝毫不怂:市场份额继续增 有钱人多
最新资讯:努比亚Z50 Ultra首销卖爆:获京东/天猫平台销量销售额冠军