小编Dur*_*rga的帖子

fabricJs 自定义对象不会从 JSON 呈现

fabricJS 版本 2.2.3

测试jsFiddle

我正在尝试使用 LabeledRect 子类,但我的问题是,每当我尝试从 JSON 加载它时,它都不会呈现,并且在控制台中也没有出现错误。请参阅下面的小提琴。

我怎样才能正确渲染它?我认为我的问题出在 fromObject func 但我不知道在哪里。

/**
 * fabric.js template for bug reports
 *
 * Please update the name of the jsfiddle (see Fiddle Options).
 * This templates uses latest dev verison of fabric.js (https://rawgithub.com/kangax/fabric.js/master/dist/fabric.js).
 */

// initialize fabric canvas and assign to global windows object for debug
var canvas = window._canvas = new fabric.Canvas('c');

// ADD YOUR CODE HERE

var json = '{"version":"2.2.3","objects":[{"type":"labeledRect","version":"2.2.3","originX":"left","originY":"top","left":0,"top":0,"width":100,"height":50,"fill":"#faa","stroke":null,"strokeWidth":1,"strokeDashArray":null,"strokeLineCap":"butt","strokeLineJoin":"miter","strokeMiterLimit":10,"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"rx":0,"ry":0,"label":"1"}]}';

fabric.LabeledRect = fabric.util.createClass(fabric.Rect, {

  type: 'labeledRect',

  initialize: function(options) …
Run Code Online (Sandbox Code Playgroud)

fabricjs

4
推荐指数
1
解决办法
1206
查看次数

FabricJs canvas 到 dataurl 图像大小问题

我正在尝试使用 FabricJS 画布创建图像canvas.toDataURL();

我有 php 代码,它从这个 datauri 写入实际的图像文件。

此函数从画布创建 base64 数据 uri。在正常分辨率(测试到全高清)下,这会生成我设置的实际尺寸图像(50pxX50px)。但在 4k 分辨率下,它会以某种方式生成双倍尺寸的图像。我尝试设置倍数、高度、宽度选项,但没有成功。

我在这里创建了一个jsfiddle

var canvas = new fabric.Canvas('myCanvas');
canvas.setHeight(50);
canvas.setWidth(50);
canvas.setBackgroundColor('rgb(59,173,160)');
// create a rectangle object
var rect = new fabric.Rect({
  left: 0,
  top: 0,
  fill: 'blue',
  width: 20,
  height: 20
});
// "add" rectangle onto canvas
canvas.add(rect);
var img = canvas.toDataURL({
  format: 'png',
  multiplier: 1,
  left: 0,
  top: 0,
  width: 50,
  height: 50
});
console.log(img);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.3/fabric.min.js"></script>
<canvas id="myCanvas" style="border: 2px solid red;">
    Your browser …
Run Code Online (Sandbox Code Playgroud)

html canvas fabricjs

3
推荐指数
1
解决办法
4878
查看次数

用带透视的方框加入2个div

想要创建一个像这样的功能区:

在此输入图像描述

目前,我的尝试看起来像这样:

在此输入图像描述

这是我写给产品的代码:

.ribbon {
  width: 200px;
  display:inline-block;
  margin:0px; //remove any margins to prevent breaking at each element
  box-sizing:border-box; //allow paddings to not interfere with element width 
}

.front {
  float: left;
  display: inline;
  width: 45%;
  background: #EA0B1D;
  border-radius: 6px 0px 0px 6px;
  padding-top: 15px;
  padding-bottom: 15px;
}

.middle {
  float: left;
  display: inline;
  width: 5%;
  background: #B1071D;
  padding-top: 15px;
  padding-bottom: 15px;
  transform: rotate(0deg) skewX(45deg);
  -webkit-transform: rotate(0deg) skewX(45deg);
  -ms-transform: rotate(0deg) skewX(45deg);
}

.back {
  float: right;
  display: inline;
  width: 45%; …
Run Code Online (Sandbox Code Playgroud)

html css css3

3
推荐指数
1
解决办法
74
查看次数

md-selected 在 md-tab 中无法正常工作

var app = angular.module('tabsDemo', ['ngMaterial']);
app.controller('TabsController',tabsController);
function tabsController($scope){
    $scope.showBack = false;
    //$scope.selectedIndex = 3;
    $scope.tabs = [1,2,3,4,5,6];
    $scope.changeTabs = function(){
      $scope.showBack = true;
      $scope.tabs = ['a','b'];
    }
    $scope.goHome = function(){
      $scope.showBack = false;
      $scope.tabs = [1,2,3,4,5,6];
      $scope.selectedIndex = 3;
    }
}
Run Code Online (Sandbox Code Playgroud)
<link href="https://rawgit.com/angular/bower-material/master/angular-material.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.js"></script>
<script src="https://rawgit.com/angular/bower-material/master/angular-material.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular-animate.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular-aria.js"></script>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
      rel="stylesheet">
      
<div ng-app="tabsDemo" ng-controller="TabsController">

  <md-button ng-show = "showBack" ng-click = "goHome()">
   <i class="material-icons">keyboard_backspace</i>
  </md-button>
  
  <md-tabs md-selected="selectedIndex" md-stretch-tabs>
    <md-tab ng-repeat="tab in tabs" label="{{tab}}">
      <div style="text-align: center;">
      
         <button …
Run Code Online (Sandbox Code Playgroud)

angularjs angular-material

3
推荐指数
1
解决办法
2592
查看次数

Fabric.js :更改一个或多个选择的正方形/矩形颜色

我正在开发一个使用Fabric.js库的项目。我想知道如何更改当您想要选择一个或多个对象时出现的正方形/矩形。

就是下图中的蓝色矩形:

在此输入图像描述

我已经在更改一些样式,例如对象选择的角颜色、边框颜色等等:

fabric.Object.prototype.selection = !HelperJSViewBag.getValue("isMobile") && true;
fabric.Object.prototype.selectionColor = HelperJSViewBag.getValue("selectionColor").length > 0 ? HelperJSViewBag.getValue("selectionColor") : 'rgba(255,119,0,0.3)';
fabric.Object.prototype.rotationCursor = HelperJSViewBag.getValue('cursor_rotacao').length > 0 ? HelperJSViewBag.getValue('cursor_rotacao') : "crosshair";
fabric.Object.prototype.cornerSize = HelperJSViewBag.getValue("isMobile") ? (HelperJSViewBag.getValue("containerCornerSizeMobile") > 0 ? HelperJSViewBag.getValue("containerCornerSizeMobile") : 14) : (HelperJSViewBag.getValue("containerCornerSize") > 0 ? HelperJSViewBag.getValue("containerCornerSize") : 10);
fabric.Object.prototype.cornerColor = HelperJSViewBag.getValue("containerCornerColor").length > 0 ? HelperJSViewBag.getValue("containerCornerColor") : '#eee';
fabric.Object.prototype.borderColor = fabric.Object.prototype.cornerColor;
fabric.Object.prototype.transparentCorners = false;
fabric.Object.prototype.borderScaleFactor = HelperJSViewBag.getValue("borderScaleFactor") > 0 ? HelperJSViewBag.getValue("borderScaleFactor") : 1;
fabric.Object.prototype.hasRotatingPoint = !HelperJSViewBag.getValue("isMobile") && true;
fabric.Object.prototype.rotatingPointOffset = HelperJSViewBag.getValue("isMobile") ? …
Run Code Online (Sandbox Code Playgroud)

html javascript fabricjs

3
推荐指数
1
解决办法
1599
查看次数

修改后如何获取Fabric.js对象的正确高度和宽度

绘制对象并用鼠标修改对象后,坐标(Object.width 和 Object.height)保持与最初绘制的对象相同。

const button = document.querySelector('button');

function load() {
  const canvas = new fabric.Canvas('c');
  const rect = new fabric.Rect({
    width: 100,
    height: 100,
    left: 10,
    top: 10,
    fill: 'yellow',
  });

  function objectAddedListener(ev) {
    let target = ev.target;
    console.log('left', target.left, 'top', target.top, 'width', target.width, 'height', target.height);
  }

  function objectMovedListener(ev) {
    let target = ev.target;
    console.log('left', target.left, 'top', target.top, 'width', target.width, 'height', target.height);
  }

  canvas.on('object:added', objectAddedListener);
  canvas.on('object:modified', objectMovedListener);

  canvas.add(rect);

}

load();

button.addEventListener('click', load);
Run Code Online (Sandbox Code Playgroud)

代码笔

fabricjs

3
推荐指数
1
解决办法
3781
查看次数

如何添加多边形点并将其绘制在Fabric JS中的图像上

该代码在Fabric js 1.5版中受支持,但在最新版本的Fabric js(如1.7及更高版本)中不支持。有人可以在此代码中为我提供帮助吗?我希望在1.7.21版Fabric中实现它。鼠标坐标在较新版本的结构中。

var canvas = new fabric.Canvas('canvas');
var polygonCount = 1;
var startDrawingPolygon;
var ArrayLength;
var addTexture = false;
var circleCount = 1;
var fillColor = "rgba(46, 240, 56, 0.5)";

function done() {
  startDrawingPolygon = false;
  ArrayLength = circleCount;
  circleCount = 1;
  var tempCount = 0;
  window["polygon" + polygonCount] = new fabric.Polygon([{
    x: 0,
    y: 0
  }, {
    x: 0.5,
    y: 0.5
  }], {
    fill: fillColor,
    PolygonNumber: polygonCount,
    name: "Polygon",
    type: 'normal',
    noofcircles: ArrayLength
  });
  canvas.add(window["polygon" + polygonCount]); …
Run Code Online (Sandbox Code Playgroud)

fabricjs

3
推荐指数
1
解决办法
1528
查看次数

一个字母和三个数字的正则表达式

我试过这个RegEX没有解决方案

^([a-zA-Z]{1})([0-9]{3})$

测试用例:有效

123D

F311

12D3

99A9

javascript regex

2
推荐指数
1
解决办法
1051
查看次数

几个功能

我试图在这里做两个函数,一个是我使用加法,另一个是我使用乘法.如果我输入5和6,则计算按钮将生成11和30.我应该将乘法函数放在这个中,还是单独的?如果是这样,我如何将它连接到那个按钮?

function calculate() {
  tal1 = document.getElementById("tal1").value;
  tal2 = document.getElementById("tal2").value;
  var answer;
  answer = tal1 * 1 + tal2 * 1;
  document.getElementById("answer").value = answer;
}
Run Code Online (Sandbox Code Playgroud)
<form id="f1" name="f1">
  <input id="tal1" type="text"><br><br>
  <input id="tal2" type="text"><br><br>
  <input onclick="calculate()" type="button" value="Calculate!"><br><br>
  <input id="answer" type="text"><br><br>
  <input id="answer" type="text">
</form>
Run Code Online (Sandbox Code Playgroud)

html javascript

2
推荐指数
1
解决办法
71
查看次数

只返回不在数组中的随机数

我想创建一个函数,它将一个数组作为参数,从中创建一个随机数1 - 10,并运行直到它创建一个不在数组中的数字,并返回它.

这是jsfiddle

function contains() {
  var check = false;
  while (!check) {
    var random = Math.floor(Math.random() * 10);
    random += 1;
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] === random) {
        console.log(random);
        check = false;
        return false;
      }
    }
    check = true;
    console.log(random);
    return true;
  }
}

var arr = [1, 2, 3, 4, 5, 6];

$(".test").on("click", function() {
  contains(arr);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="test">
Test
</button>
Run Code Online (Sandbox Code Playgroud)

javascript arrays jquery

2
推荐指数
1
解决办法
74
查看次数

获取对象的缩放宽度:缩放

我想在缩放对象时获得真实的对象宽度和高度。我试过

canvas.on('object:scaling', function(e){
  console.log(e.target.width*e.target.scaleX);
});
Run Code Online (Sandbox Code Playgroud)

但似乎不能正常工作。

javascript fabricjs

1
推荐指数
1
解决办法
1235
查看次数

HTML Canvas:如何为折线图下的区域着色?

我正在尝试创建山形图(折线图和下面的区域被阴影化),但是,无论我如何尝试,阴影区域都不能覆盖整个区域。因为我的图表是一条开放路径,所以填写的结果是通过图表线的区域。

在此处输入图片说明

下面是我放在W3School上以演示该问题的示例代码。

我还在同一行上看到了其他一些问题,但是也遵循这些问题也会导致同样的问题。

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.moveTo(0,150);
ctx.lineTo(100,70);
ctx.lineTo(150,100);
ctx.lineTo(200,140);
ctx.lineTo(250,90);
ctx.lineTo(300,110);
ctx.fillStyle ="red";
ctx.fill();
ctx.stroke();
Run Code Online (Sandbox Code Playgroud)
<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
Run Code Online (Sandbox Code Playgroud)

javascript charts html5 canvas html5-canvas

0
推荐指数
1
解决办法
1039
查看次数

JavaScript函数导致循环结束?

我的功能和循环有问题,不知道为什么.

var a = ['1,0,1', '0,1,0', '1,1,1'];
var b = [1, 1, 1];

function myFunction() {
  for (i = 0; i < a.length; i++) {
    var user = a[i].split(',');
    var cs = cosinesim(user, b);
    document.getElementById("cs").innerHTML += String(user) + '  ' + String(cs) + '<br>';
    cs = 0;
    user = '';
  }
}

function cosinesim(A, B) {
  var dotproduct = 0;
  var mA = 0;
  var mB = 0;
  for (i = 0; i < A.length; i++) {
    dotproduct += (parseInt(A[i]) …
Run Code Online (Sandbox Code Playgroud)

javascript

0
推荐指数
1
解决办法
50
查看次数