feat(邀请函): 添加二维码生成功能
- 新增二维码按钮及弹窗界面 - 实现二维码生成、预览和添加到画布功能 - 支持二维码在画布上的拖拽操作 - 添加相关样式和事件处理
This commit is contained in:
29
js/script.js
29
js/script.js
@@ -3172,6 +3172,35 @@
|
||||
drawTextOnCanvasHD(ctx, textInput, scale);
|
||||
}
|
||||
});
|
||||
|
||||
// 绘制二维码
|
||||
const qrImages = container.querySelectorAll('img[data-type="qrcode"]');
|
||||
for (const qrImg of qrImages) {
|
||||
if (!qrImg.classList.contains('layer-hidden')) {
|
||||
const rect = qrImg.getBoundingClientRect();
|
||||
const containerRect = container.getBoundingClientRect();
|
||||
const x = (rect.left - containerRect.left) * scale;
|
||||
const y = (rect.top - containerRect.top) * scale;
|
||||
const w = rect.width * scale;
|
||||
const h = rect.height * scale;
|
||||
|
||||
// 确保图片已加载
|
||||
if (qrImg.complete && qrImg.naturalWidth > 0) {
|
||||
ctx.drawImage(qrImg, x, y, w, h);
|
||||
} else {
|
||||
// 等待图片加载完成
|
||||
await new Promise(resolve => {
|
||||
qrImg.onload = () => {
|
||||
ctx.drawImage(qrImg, x, y, w, h);
|
||||
resolve();
|
||||
};
|
||||
qrImg.onerror = () => resolve();
|
||||
// 超时处理
|
||||
setTimeout(resolve, 100);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 记录总耗时
|
||||
const endTime = performance.now();
|
||||
|
||||
Reference in New Issue
Block a user