• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > canvas fabric.js api梳理

canvas fabric.js api梳理

作者:yanzisu_congcong的博客 字体:[增加 减小] 来源:互联网 时间:2017-09-04

本文主要包含api,canvas,fabric-js等相关知识,yanzisu_congcong的博客希望在学习及工作中可以帮助到您

锁住

lockMovementX   lockMovementY   lockRotation  
lockScalingX    lockScalingY

选中元素时去掉连接线

object.hasBorders = false;

选中元素时去掉四边的框

object.hasControls=false;

设置选中元素时的样子

object.set({
  borderColor: 'red',
  cornerColor: 'green',
  cornerSize: 6
});

设置元素不能被操作

Object.selectable=false ;

设置背景图

canvas.setBackgroundImage('img/golfball.png',canvas.renderAll.bind(canvas));

设置背景透明显示

canvas.setOverlayImage('../assets/jail_cell_bars.png', canvas.renderAll.bind(canvas));

事件:

mouse:up mouse:move mouse:dowm
object:modified object:moving  object:selected object:scalig object:rotating 
before:selection:cleared  selection:cleared
after:render
"path:created"  "object:added" "object:removed"

添加线

var line = new fabric.Line([10, 10, 100, 100], {
  fill: 'green',
  stroke: 'green'
});
canvas.add(line);

添加矩形

var canvas = new fabric.Canvas('c');
var rect = new fabric.Rect({
  left: 100,
  top: 100,
  fill: 'red',
  width: 20,
  height: 20
});
canvas.add(rect);

移动到指定位置

rect.set({ left: 20, top: 50 });
canvas.renderAll();

设置一些属性

rect.set('fill', 'red');
rect.set({ strokeWidth: 5, stroke: 'rgba(100,200,200,0.5)' });
rect.set('angle', 15).set('flipY', true);

添加圆和三角形

var circle = new fabric.Circle({
  radius: 20, fill: 'green', left: 100, top: 100
});
var triangle = new fabric.Triangle({
  width: 20, height: 30, fill: 'blue', left: 50, top: 50
});
canvas.add(circle, triangle);

椭圆

var ellipse = new fabric.Ellipse({
  rx: 45,
  ry: 80,
  fill: 'yellow',
  stroke: 'red',
  strokeWidth: 3,
  angle: 30,
  left: 100,
  top: 100
});
canvas.add(ellipse);

Canvas中操作一些元素的方法

var canvas = new fabric.Canvas('c');
var rect = new fabric.Rect();
canvas.add(rect); // add object

canvas.item(0); // reference fabric.Rect added earlier (first object)
canvas.getObjects(); // get all objects on canvas (rect will be first and only)

canvas.remove(rect); // remove previously-added fabric.Rect

加载图片的方法

var canvas = new fabric.Canvas('c');
var imgElement = document.getElementById('my-image');
var imgInstance = new fabric.Image(imgElement, {
  left: 100,
  top: 100,
  angle: 30,
  opacity: 0.85
});
canvas.add(imgInstance);

fabric.Image.fromURL('my_image.png', function(oImg) {
  canvas.add(oImg);
});

fabric.Image.fromURL('my_image.png', function(oImg) {
  // scale image down, and flip it, before adding it onto canvas
  oImg.scale(0.5).setFlipX(true);
  canvas.add(oImg);
});

通过画路径为形状

var canvas = new fabric.Canvas('c');
var path = new fabric.Path('M 0 0 L 200 100 L 170 200 z');
path.set({ left: 120, top: 120 });
canvas.add(path);

可以设置路径样式

path.set({ fill: 'red', stroke: 'green', opacity: 0.5 });

动画

rect.animate('angle', 45, {
  onChange: canvas.renderAll.bind(canvas)
});

或

rect.animate('left', '+=100', { onChange: canvas.renderAll.bind(canvas) });

或

rect.animate('angle', '-=5', { onChange: canvas.renderAll.bind(canvas) });

或

rect.animate('left', 500, {
  onChange: canvas.renderAll.bind(canvas),
  duration: 1000,
  easing: fabric.util.ease.easeOutBounce
});

组合的使用

var circle = new fabric.Circle({
  radius: 100,
  fill: '#eef',
  scaleY: 0.5,
  originX: 'center',
  originY: 'center'
});

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

设置组合中的元素

group.item(0).setFill('red');
group.item(1).set({
  text: 'trololo',
  fill: 'white'
});

序列化

var canvas = new fabric.Canvas('c');
JSON.stringify(canvas);

或

canvas.toDatalessJSON()

反序列化

canvas.loadFromJSON(JSON.stringify(canvas))

透时图片随mouse移动显示

(function() {
  var canvas = this.__canvas = new fabric.Canvas('c');
  fabric.Object.prototype.transparentCorners = false;
  fabric.Object.prototype.originX = fabric.Object.prototype.originY = 'center';


  fabric.loadSVGFromURL('../assets/135.svg', function(objects) {

    var obj = objects[0].scale(0.25);
    canvas.centerObject(obj);
    canvas.add(obj);

    obj.clone(function(c) {
      canvas.add(c.set({ left: 100, top: 100, angle: -15 }));
    });
    obj.clone(function(c) {
      canvas.add(c.set({ left: 480, top: 100, angle: 15 }));
    });
    obj.clone(function(c) {
      canvas.add(c.set({ left: 100, top: 400, angle: -15 }));
    });
    obj.clone(function(c) {
      canvas.add(c.set({ left: 480, top: 400, angle: 15 }));
    });

    canvas.on('mouse:move', function(options) {

      var p = canvas.getPointer(options.e);

      canvas.forEachObject(function(obj) {
        var distX = Math.abs(p.x - obj.left),
            distY = Math.abs(p.y - obj.top),
            dist = Math.round(Math.sqrt(Math.pow(distX, 2) + Math.pow(distY, 2)));

        obj.setOpacity(1 / (dist / 20));
      });

      canvas.renderAll();
    });
  });
})();

锁定旋转

  var canvas = new fabric.Canvas('c6');
  canvas.add(new fabric.Rect({ width: 50, height: 50, fill: '#77f', top: 100, left: 100 }));
  canvas.item(0).lockRotation = true;
  this.__canvases.push(canvas);

锁定大小缩放

var canvas = new fabric.Canvas('c7');
  canvas.add(new fabric.Rect({ width: 50, height: 50, fill: '#77f', top: 100, left: 100 }));
  canvas.item(0).lockScalingX = canvas.item(0).lockScalingY = true;
  this.__canvases.push(canvas);

锁定X轴移动

  var canvas = new fabric.Canvas('c8');
  canvas.add(new fabric.Rect({ width: 50, height: 50, fill: '#77f', top: 100, left: 100 }));
  canvas.item(0).lockMovementX = true;
  this.__canvases.push(canvas);

锁定Y轴移动

  var canvas = new fabric.Canvas('c9');
  canvas.add(new fabric.Rect({ width: 50, height: 50, fill: '#77f', top: 100, left: 100 }));
  canvas.item(0).lockMovementY = true;
  this.__canvases.push(canvas);

设置背景图

  var canvas = new fabric.Canvas('c17');
  canvas.add(new fabric.Circle({ radius: 30, fill: '#f55', top: 100, left: 100 }));
  canvas.setBackgroundImage('../assets/pug.jpg', canvas.renderAll.bind(canvas));
  this.__canvases.push(canvas);

设置背景图前显

  var canvas = new fabric.Canvas('c13');
  canvas.add(new fabric.Circle({ radius: 30, fill: &
  


 

您可能想查找下面的文章:

  • HTML5拖放API实现拖放排序的实例代码
  • 详解html5 canvas常用api总结(二)--绘图API
  • HTML5中使用postMessage实现两个网页间传递数据
  • 详解HTML5中的Communication API基本使用方法
  • HTML5 History API 实现无刷新跳转
  • HTML5的一个显示电池状态的API简介
  • 使用HTML5的Notification API制作web通知的教程
  • HTML5全屏(Fullscreen)API详细介绍
  • HTML5 Convas APIs方法详解
  • HTML5学习笔记之History API

相关文章

  • 2018-12-03对HTML5中表单新增属性的分析
  • 2018-12-03基于HTML5制作在线上海地铁图
  • 2018-12-03使用HTML5 Canvas API中的clip()方法裁剪区域图像_html5教程技巧
  • 2018-12-03用 HTML5 可以实现二维码扫描识别的功能吗?
  • 2018-12-03Html5插件教程之添加浏览器放大镜效果的商品橱窗_html5教程技巧
  • 2018-12-03HTML5中的表单元素
  • 2018-12-03HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用_html5教程技巧
  • 2018-12-03教你如何实现一个H5微场景
  • 2018-12-03YouTube 宣布终止使用 Flash 作为默认设置,这是不是说明 Flash 真的要完了?
  • 2018-12-03关于移动页面的详细介绍

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5标准学习-文档结构详解
    • HTML5实现页面切换激活的PageVisibility API使用初探
    • html5使用html2canvas实现浏览器截图
    • HTML5 Video标签的属性、方法和事件汇总介绍_html5教程技巧
    • 快速搭建TP-LINK电信拓扑设备面板基于HTML5的实现方法
    • [HTML5游戏开发]挑战横版ACT(三):遇红颜英雄亦多情
    • html5的setCustomValidity的详细介绍
    • HTML5 embed标签定义和用法详解_html5教程技巧
    • 关于文字渲染的课程推荐
    • 大神看下,选择免费的linux培训还是自学java或者参加java培训班呢?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有