2026-03-09 13:44:32 +08:00
|
|
|
import { fabric } from "fabric-with-all";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Factory for creating optimized fabric canvas instances
|
|
|
|
|
*/
|
|
|
|
|
export const createCanvas = (elementId, options = {}) => {
|
|
|
|
|
// Create the canvas instance
|
|
|
|
|
const canvas = new fabric.Canvas(elementId, {
|
|
|
|
|
enableRetinaScaling: true,
|
|
|
|
|
renderOnAddRemove: false,
|
|
|
|
|
preserveObjectStacking: true, // 保持对象堆叠顺序
|
|
|
|
|
// skipOffscreen: true, // 跳过离屏渲染
|
|
|
|
|
imageSmoothingEnabled: true, // 启用图像平滑 - 抗锯齿
|
|
|
|
|
imageSmoothingQuality: "high", // 设置高质量图像平滑
|
2026-03-13 11:18:36 +08:00
|
|
|
fireMiddleClick: true,// 启用中键点击事件
|
|
|
|
|
fireRightClick: true,// 启用右键点击事件
|
|
|
|
|
stopContextMenu: true,// 阻止浏览器默认的右键菜单弹出,避免干扰
|
2026-03-09 13:44:32 +08:00
|
|
|
...options,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return canvas;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Utility to create a static canvas (for improved performance when interaction is not needed)
|
|
|
|
|
*/
|
|
|
|
|
export const createStaticCanvas = (elementId, options = {}) => {
|
|
|
|
|
const canvas = new fabric.StaticCanvas(elementId, {
|
|
|
|
|
enableRetinaScaling: true,
|
|
|
|
|
imageSmoothingEnabled: true, // 启用图像平滑 - 抗锯齿
|
|
|
|
|
imageSmoothingQuality: "high", // 设置高质量图像平滑
|
|
|
|
|
skipOffscreen: false, // 不跳过离屏渲染
|
|
|
|
|
...options,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return canvas;
|
|
|
|
|
};
|