gpt4 book ai didi

javascript - Fabric.js - 更改矩形填充

转载 作者:太空狗 更新时间:2023-10-29 16:51:49 24 4
gpt4 key购买 nike

我正在开发一个使用 Fabric.js 的应用程序.

我需要能够更改作为背景放置的矩形填充

我使用 canvas.getActiveObject() 来改变矩形的填充。不幸的是,我似乎找不到可以改变矩形填充的方法。

这是我的代码:

<html>
<head>
<title>Text Rendering Example</title>
<script src="fabric.js"></script>
<script src="canvas2image.js"></script>
<script src="base64.js"></script>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"

</head>
<body>
<canvas id="canvas" width="1000" height="600" style="border:1px solid #000000"></canvas>



<form name = "boxForm" onsubmit="addBox()">
Width: <input type="text" name="firstname" /><br />
Text: <input id="text-control" type="text" name="textString" />
Text Color: <input id="text-color" type="text" value = "#FF0000" name="textColor" />
Background Color: <input id="background-color" type="text" value = "#333333" name="backgroundColor" />
</form>

<button onclick="addBox()">Background</button>

<button onclick="addText()">Add Text</button>

<!--button onclick="updateControls()">Edit Text</button-->

<button onclick="saveImage()">File</button>

<script type="text/javascript" >

var canvas = new fabric.Canvas('canvas');

var $ = function(id){return document.getElementById(id)};

var textArray = new Array();

var textControl = $('text-control');
var textColor = $('text-color');
var backgroundColor = $('background-color');

function addBox()
{
var rect = new fabric.Rect({
width: 1000,
height: 600,
top: 300,
left: 500,
fill: 'rgba(51,51,51,1)',
draggable: false
});
rect.lockMovementX = true;
rect.lockMovementY = true;
rect.lockUniScaling = true;
rect.lockRotation = true;

canvas.add(rect);
}

function addText()
{
var content = document.boxForm.textString.value;
var color = document.boxForm.textColor.value;

text = new fabric.Text(content, {
left: 100,
top: 100,
fill: color
});
text.lockUniScaling = true;
text.lockRotation = true;

//textArrayAdd(text);

canvas.add(text);
}

textControl.onchange = function() {
canvas.getActiveObject().setText(this.value);
canvas.renderAll();
};

textColor.onchange = function() {
canvas.getActiveObject().setColor(this.value);
canvas.renderAll();
};

/*----This is where I change the color of the Rectangle-----*/

backgroundColor.onchange = function() {
canvas.getActiveObject().fillRect( 20, 100, 100, 50 );
canvas.renderAll();
};

/*----This is where I change the color of the Rectangle-----*/


/*function textArrayAdd(obj)
{
textArray.push(obj);
}*/

function updateControls() {
textControl.value = canvas.getActiveObject().getText();
}

canvas.on({
'object:selected': updateControls,
});

/*var strDataURI = canvas.toDataURL('image/png');

function saveImage()
{
Canvas2Image.saveAsPNG(canvas);
}*/


</script>

</body>
</html>

关于如何更改它的任何想法?提前致谢!

最佳答案

使用fabric的基本set方法解决了这个问题:

backgroundColor.onchange = function() {         
canvas.getActiveObject().set("fill", this.value);
canvas.renderAll();
};

关于javascript - Fabric.js - 更改矩形填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com