优化图片和显示问题

This commit is contained in:
24kycj
2026-09-22 17:39:48 +08:00
parent 0f26163ad7
commit 381a48b5c5
12 changed files with 54 additions and 13 deletions
+29 -5
View File
@@ -781,17 +781,22 @@ $('#down_obj').click(function () {
$('#set_bg').click(function () {
//设置为背景
let obj = canvas.getActiveObject()
let idx = getIndex(canvas.getActiveObject())
if (!obj) return;
let idx = getIndex(obj)
if (idx <= 0) return;
const scaleX = 1012 / obj.width
const scaleY = 648 / obj.height
// 使用缩放后的实际尺寸计算位置,确保与初始背景图片位置一致
// 修正:使用当前活动画布的容器宽度,背面应取 canvas2 的容器宽度
const containerW = canvas.width || 1012;
const containerH = canvas.height || 648;
const scaledWidth = obj.width * scaleX;
const scaledHeight = obj.height * scaleY;
obj.set({
scaleX: scaleX,
scaleY: scaleY,
left: ($('#canvas1').width() - scaledWidth) / 2,
top: ($('#canvas1').height() - scaledHeight) / 2
left: (containerW - scaledWidth) / 2,
top: (containerH - scaledHeight) / 2
})
$('#text_w').val(1012)
$('#text_h').val(648)
@@ -810,12 +815,31 @@ $('#set_bg').click(function () {
evented: false
});
$("#lock_img").attr("src", soonAsset("lock20.png"))
canvas.sendToBack(canvas.getActiveObject())
canvas.bringForward(canvas.getActiveObject())
// 修正:先 remove 当前画布上的旧背景占位图(正面 background_image1 / 背面 background_image2),
// 否则 sendToBack 后用户图被压到最底层,仍会被占位图覆盖,肉眼看不到。
var oldBg = (canvas === canvas2) ? background_image2 : background_image1;
if (oldBg && oldBg !== obj) {
canvas.remove(oldBg);
}
canvas.sendToBack(obj);
canvas.bringForward(obj);
canvas.renderAll()
let objItem = objs.splice(idx - 1, 1)[0]
objs.unshift(objItem)
// 同步 background_image 引用:背面时更新 background_image2,正面更新 background_image1
if (canvas === canvas2) {
background_image2 = obj;
window.background_image2 = obj;
} else {
background_image1 = obj;
window.background_image1 = obj;
}
background_image = obj;
window.background_image = obj;
// 确保背景图(索引0)的锁定属性被正确设置
setTimeout(() => {
let bgObj = canvas.getObjects()[0];