javascript - 在画布中添加 elem 会删除背景并将其自身呈现在白色画布上
问题描述
在画布中添加任何织物 js 元素(如文本或任何形状)会删除我之前为画布设置的背景,并且对象会在白色画布上呈现自身。我想在具有背景的画布上加载对象。
我尝试了 renderAll() 和 bind() 但它根本没有帮助。
这里c是另一个画布,window.canvas是另一个,我将c设置为window.canvas的背景。这里一切都很好
var ctx = window.canvas.getContext("2d");
var background = new Image();
background.src = c.toDataURL("image/png", 1.0);
background.onload = function(){
ctx.drawImage(background,0,0,this.naturalWidth,this.naturalHeight,0,0,window.canvas.width,window.canvas.height);
}
window.canvas.setHeight(c.height);
window.canvas.setWidth(c.width);
window.canvas.renderAll();
当我绘制此形状或任何其他织物元素时出现问题,它加载在白色画布上,而不是在我的旧画布上,它是具有某些背景的 window.canvas
shapCirEl.onclick = function() {
var cir = new fabric.Circle({
radius: 60,
fill: 'red',
top: 100,
left: 100
});
cir.set({
borderColor: 'black',
cornerColor: 'black',
cornerSize: 6,
transparentCorners: false,
hasRotatingPoint: false
});
window.canvas.add(cir);
window.canvas.setActiveObject(cir);
};
当我绘制这个形状或任何其他织物元素时,它会加载到白色画布上,而不是加载到我的旧画布上,它是带有一些背景的 window.canvas
解决方案
使用setBackgroundImage设置背景图像。
var url = c.toDataURL("image/png", 1.0);
window.canvas.setBackgroundImage(url,function(){
canvas.renderAll();
})
推荐阅读
- c# - FileHelpers - DelimitedClassBuilder 不能使用它
- c# - C# object to list c#
- acumatica - 如何将客户类字段添加到 Acumatica 中的 SO 屏幕?
- javascript - 使用 Promise.catch() 和在 try...catch 中包装 Promise 有什么区别?
- java - ASM:visitLabel 生成太多标签和 nop 指令
- tree - 编辑设备树的好方法是什么?它在哪里 ?(元孙熙)
- database - 如何与 Python 一起实现 Web 应用程序
- angular - Angular6:如何在一行中使用 HttpParams 设置和传递参数?
- c - 如何使用 atmega328p 从 dht11 读取数据
- mysql - 如何在一定条件下使用mysql中的子查询从不同的表中调用列