简体   繁体   English

fabricjs多个画布处理

[英]fabricjs multiple canvases handling

Using angular In a foreach loop i am generating a canvas using Fabricjs and attaching images and text. 使用角度在foreach循环中,我正在使用Fabricjs生成画布并附加图像和文本。 What i need to know is how to keep track of the multiple canvas variables being set. 我需要知道的是如何跟踪设置的多个画布变量。

angular.forEach($scope.data, function (obj, key) {
   var newCanvas = document.createElement('canvas');
   newCanvas.id = 'variableCanvas'+key;
   var body = document.getElementById("canvasContainer");
   body.appendChild(newCanvas);


   var canvas = new fabric.Canvas('variableCanvas'+key, {
                    backgroundColor: 'rgb(215,215,215)',
                    selectionColor: 'blue',
                    width: $scope.width,
                    height: $scope.height,
                    centeredRotation: true,
                    centeredScaling: true,
                    canvasKey: key
                });


});

The problem is i need to make var canvas to be something like var canvas+key so that i can access the specific canvas variable later on to add text or other elements. 问题是我需要使var canvas是类似于var canvas + key之类的东西,以便以后可以访问特定的canvas变量以添加文本或其他元素。 Any ideas on this. 任何想法。 When i try to name the variable var canvas+key or var canvas[key] or var canvas.key it wont work i get a error for syntax. 当我尝试命名变量var canvas + key或var canvas [key]或var canvas.key时,它将无法正常工作,但语法出现错误。

so later on i can do 所以以后我可以做

 canvas+key.add(inputText);

because i can keep track of the key in the application 因为我可以跟踪应用程序中的密钥

You can define a canvas array on $scope outside your foreach loop. 您可以在foreach循环外的$ scope上定义一个画布数组。 And then assign each canvas to $scope.canvas[key]. 然后将每个画布分配给$ scope.canvas [key]。 So your code will be like this: 因此,您的代码将如下所示:

$scope.canvas = [];
angular.forEach($scope.data, function (obj, key) {
   var newCanvas = document.createElement('canvas');
   newCanvas.id = 'variableCanvas'+key;
   var body = document.getElementById("canvasContainer");
   body.appendChild(newCanvas);


   $scope.canvas[key] = new fabric.Canvas('variableCanvas'+key, {
                    backgroundColor: 'rgb(215,215,215)',
                    selectionColor: 'blue',
                    width: $scope.width,
                    height: $scope.height,
                    centeredRotation: true,
                    centeredScaling: true,
                    canvasKey: key
                });


});

This way you can assess the all your canvasses as scope variable using the key. 这样,您可以使用键将所有画布评估为作用域变量。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM