复制粘贴保存快捷键
This commit is contained in:
@@ -1 +1 @@
|
||||
{"history":[{"time":"2025-5-28","path":"E:\\project\\sideline\\shanghaikashu\\文件\\soon文件\\ceshi6.soon"},{"time":"2025-4-10","path":"E:\\project\\sideline\\shanghaikashu\\文件\\soon文件\\ceshi7.soon"},{"time":"2025-4-9","path":"E:\\project\\sideline\\shanghaikashu\\文件\\soon文件\\ceshi5.soon"},{"time":"2025-4-9","path":"E:\\project\\sideline\\shanghaikashu\\文件\\soon文件\\ceshi.soon"}]}
|
||||
{"history":[{"time":"2025-6-2","path":"E:\\project\\sideline\\shanghaikashu\\文件\\soon文件\\ceshi6.soon"},{"time":"2025-4-10","path":"E:\\project\\sideline\\shanghaikashu\\文件\\soon文件\\ceshi7.soon"},{"time":"2025-4-9","path":"E:\\project\\sideline\\shanghaikashu\\文件\\soon文件\\ceshi5.soon"},{"time":"2025-4-9","path":"E:\\project\\sideline\\shanghaikashu\\文件\\soon文件\\ceshi.soon"}]}
|
||||
+97
-3
@@ -775,6 +775,11 @@
|
||||
ipcRenderer.send('get-scale-rate');
|
||||
const { clipboard } = require('electron')
|
||||
const dpi = 600
|
||||
// 内部剪贴板
|
||||
let clipboardData = {
|
||||
objects: null,
|
||||
offset: 10 // 粘贴位置偏移量
|
||||
};
|
||||
//var encrypt = new JSEncrypt();
|
||||
//encrypt.setPublicKey(`-----BEGIN PUBLIC KEY-----
|
||||
//MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDAbKQ46WevL9PapJ+AlZqSzczkTovu7STH
|
||||
@@ -4354,7 +4359,7 @@
|
||||
|
||||
recordObjs2.push(JSON.stringify(objs2))
|
||||
let j2 = canvas2.toJSON(["selectable", "hoverable", "hoverCursor", "text", "fontStyle", "fontWeight", "underline"]);
|
||||
j2.objects[0].hoverCursor = "default";
|
||||
// j2.objects[0].hoverCursor = "default";
|
||||
recordJson2.push(j2);
|
||||
}, 0);
|
||||
}
|
||||
@@ -5001,7 +5006,6 @@
|
||||
recordState();
|
||||
}
|
||||
function selectCircleText() {
|
||||
console.log(canvas.getActiveObject().get("text"))
|
||||
$("#circle_text_control").show();
|
||||
$("#circle_text_color").val(canvas.getActiveObject().get("fill"));
|
||||
$("#circle_text_back_color").val(canvas.getActiveObject().get("textBackgroundColor") == "" ? '#ffffff' : canvas.getActiveObject().get("textBackgroundColor"));
|
||||
@@ -6191,7 +6195,7 @@
|
||||
});
|
||||
canvas1.on("object:moving", function (e) {
|
||||
let obj = canvas.getActiveObject()
|
||||
if (objs[getIndex(e.target) - 1].type ===11) {
|
||||
if (objs[getIndex(e.target) - 1].type && objs[getIndex(e.target) - 1].type ===11) {
|
||||
let pointer = {
|
||||
x: obj.left,
|
||||
y: obj.top
|
||||
@@ -6210,6 +6214,96 @@
|
||||
}
|
||||
updateControls();
|
||||
});
|
||||
// 监听键盘事件
|
||||
window.addEventListener('keydown', handleKeyDown);
|
||||
function handleKeyDown(e) {
|
||||
// 检测 Ctrl+C
|
||||
if ((e.ctrlKey || e.metaKey) && e.keyCode === 67) {
|
||||
copySelection();
|
||||
e.preventDefault(); // 阻止默认复制行为
|
||||
}
|
||||
|
||||
// 检测 Ctrl+V
|
||||
if ((e.ctrlKey || e.metaKey) && e.keyCode === 86) {
|
||||
pasteFromClipboard();
|
||||
e.preventDefault(); // 阻止默认粘贴行为
|
||||
}
|
||||
|
||||
// 检测 Ctrl+S
|
||||
if ((e.ctrlKey || e.metaKey) && e.keyCode === 83) {
|
||||
output();
|
||||
e.preventDefault(); // 阻止默认粘贴行为
|
||||
}
|
||||
}
|
||||
|
||||
// 复制选中对象
|
||||
function copySelection() {
|
||||
const activeObjects = canvas.getActiveObjects();
|
||||
|
||||
if (!activeObjects || activeObjects.length === 0) {
|
||||
console.log("未选中任何对象");
|
||||
return;
|
||||
}
|
||||
|
||||
// 存储原始对象用于克隆
|
||||
clipboardData.objects = activeObjects;
|
||||
console.log(activeObjects)
|
||||
console.log(`已复制 ${activeObjects.length} 个对象`);
|
||||
}
|
||||
|
||||
// 粘贴对象
|
||||
function pasteFromClipboard() {
|
||||
if (!clipboardData.objects || clipboardData.objects.length === 0) {
|
||||
console.log("剪贴板为空");
|
||||
return;
|
||||
}
|
||||
|
||||
// 克隆所有对象
|
||||
fabric.util.enlivenObjects(
|
||||
clipboardData.objects.map(obj => obj.toObject()),
|
||||
clonedObjects => {
|
||||
// 设置新位置(添加偏移)
|
||||
clonedObjects.forEach((clone, index) => {
|
||||
let idx = getIndex(clipboardData.objects[index])
|
||||
console.log(clone)
|
||||
clone.set({
|
||||
left: clone.left + clipboardData.offset,
|
||||
top: clone.top + clipboardData.offset,
|
||||
evented: true
|
||||
});
|
||||
// 计算整体偏移
|
||||
const groupOffset = clone.group;
|
||||
if (groupOffset) {
|
||||
clone.set({
|
||||
left: groupOffset.left + clipboard.offset,
|
||||
top: groupOffset.top + clipboard.offset
|
||||
});
|
||||
}
|
||||
|
||||
// 添加到画布
|
||||
canvas.add(clone);
|
||||
let tobj = {...objs[idx-1]}
|
||||
if (tobj.name) tobj.name = tobj.name + objs.length
|
||||
objs.push(tobj);
|
||||
canvas.renderAll();
|
||||
updateList();
|
||||
recordState();
|
||||
});
|
||||
|
||||
// 选中粘贴的对象
|
||||
canvas.discardActiveObject();
|
||||
const sel = new fabric.ActiveSelection(clonedObjects, {
|
||||
canvas: canvas
|
||||
});
|
||||
canvas.setActiveObject(sel);
|
||||
canvas.requestRenderAll();
|
||||
selectObj(objs.length - 1);
|
||||
// 增加下次偏移
|
||||
clipboardData.offset += 10;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
canvas1.on("object:scaling", function (event) {
|
||||
//if(objs[getIndex(event.target) - 1].type == 5 || objs[getIndex(event.target) - 1].type == 6){
|
||||
// //canvas.getActiveObject().set("width", canvas.getActiveObject().get("width") * canvas.getActiveObject().get("scaleX"));
|
||||
|
||||
@@ -752,6 +752,11 @@
|
||||
ipcRenderer.send('get-scale-rate')
|
||||
const { clipboard } = require('electron')
|
||||
const dpi = 300
|
||||
// 内部剪贴板
|
||||
let clipboardData = {
|
||||
objects: null,
|
||||
offset: 10 // 粘贴位置偏移量
|
||||
};
|
||||
//var encrypt = new JSEncrypt();
|
||||
//encrypt.setPublicKey(`-----BEGIN PUBLIC KEY-----
|
||||
//MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDAbKQ46WevL9PapJ+AlZqSzczkTovu7STH
|
||||
@@ -5629,6 +5634,95 @@
|
||||
// }
|
||||
updateControls();
|
||||
});
|
||||
// 监听键盘事件
|
||||
window.addEventListener('keydown', handleKeyDown);
|
||||
function handleKeyDown(e) {
|
||||
// 检测 Ctrl+C
|
||||
if ((e.ctrlKey || e.metaKey) && e.keyCode === 67) {
|
||||
copySelection();
|
||||
e.preventDefault(); // 阻止默认复制行为
|
||||
}
|
||||
|
||||
// 检测 Ctrl+V
|
||||
if ((e.ctrlKey || e.metaKey) && e.keyCode === 86) {
|
||||
pasteFromClipboard();
|
||||
e.preventDefault(); // 阻止默认粘贴行为
|
||||
}
|
||||
|
||||
// 检测 Ctrl+S
|
||||
if ((e.ctrlKey || e.metaKey) && e.keyCode === 83) {
|
||||
output();
|
||||
e.preventDefault(); // 阻止默认粘贴行为
|
||||
}
|
||||
}
|
||||
|
||||
// 复制选中对象
|
||||
function copySelection() {
|
||||
const activeObjects = canvas.getActiveObjects();
|
||||
|
||||
if (!activeObjects || activeObjects.length === 0) {
|
||||
console.log("未选中任何对象");
|
||||
return;
|
||||
}
|
||||
|
||||
// 存储原始对象用于克隆
|
||||
clipboardData.objects = activeObjects;
|
||||
console.log(activeObjects)
|
||||
console.log(`已复制 ${activeObjects.length} 个对象`);
|
||||
}
|
||||
|
||||
// 粘贴对象
|
||||
function pasteFromClipboard() {
|
||||
if (!clipboardData.objects || clipboardData.objects.length === 0) {
|
||||
console.log("剪贴板为空");
|
||||
return;
|
||||
}
|
||||
|
||||
// 克隆所有对象
|
||||
fabric.util.enlivenObjects(
|
||||
clipboardData.objects.map(obj => obj.toObject()),
|
||||
clonedObjects => {
|
||||
// 设置新位置(添加偏移)
|
||||
clonedObjects.forEach((clone, index) => {
|
||||
let idx = getIndex(clipboardData.objects[index])
|
||||
console.log(clone)
|
||||
clone.set({
|
||||
left: clone.left + clipboardData.offset,
|
||||
top: clone.top + clipboardData.offset,
|
||||
evented: true
|
||||
});
|
||||
// 计算整体偏移
|
||||
const groupOffset = clone.group;
|
||||
if (groupOffset) {
|
||||
clone.set({
|
||||
left: groupOffset.left + clipboard.offset,
|
||||
top: groupOffset.top + clipboard.offset
|
||||
});
|
||||
}
|
||||
|
||||
// 添加到画布
|
||||
canvas.add(clone);
|
||||
let tobj = {...objs[idx-1]}
|
||||
if (tobj.name) tobj.name = tobj.name + objs.length
|
||||
objs.push(tobj);
|
||||
canvas.renderAll();
|
||||
updateList();
|
||||
recordState();
|
||||
});
|
||||
|
||||
// 选中粘贴的对象
|
||||
canvas.discardActiveObject();
|
||||
const sel = new fabric.ActiveSelection(clonedObjects, {
|
||||
canvas: canvas
|
||||
});
|
||||
canvas.setActiveObject(sel);
|
||||
canvas.requestRenderAll();
|
||||
selectObj(objs.length - 1);
|
||||
// 增加下次偏移
|
||||
clipboardData.offset += 10;
|
||||
}
|
||||
);
|
||||
}
|
||||
canvas1.on('object:scaling', function (event) {
|
||||
//if(objs[getIndex(event.target) - 1].type == 5 || objs[getIndex(event.target) - 1].type == 6){
|
||||
// //canvas.getActiveObject().set("width", canvas.getActiveObject().get("width") * canvas.getActiveObject().get("scaleX"));
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
Reference in New Issue
Block a user