diff --git a/core/core-frontend/src/components/data-visualization/canvas/Shape.vue b/core/core-frontend/src/components/data-visualization/canvas/Shape.vue index 68c87e5801..7842c9bb87 100644 --- a/core/core-frontend/src/components/data-visualization/canvas/Shape.vue +++ b/core/core-frontend/src/components/data-visualization/canvas/Shape.vue @@ -829,6 +829,30 @@ const commonBackgroundSvgInner = computed(() => { } }) +const padding3D = computed(() => { + const width = defaultStyle.value.width // 原始元素宽度 + const height = defaultStyle.value.height // 原始元素高度 + const rotateX = element.value['multiDimensional'].x // 旋转X角度 + const rotateY = element.value['multiDimensional'].y // 旋转Y角度 + + // 将角度转换为弧度 + const radX = (rotateX * Math.PI) / 180 + const radY = (rotateY * Math.PI) / 180 + + // 计算旋转后新宽度和高度 + const newWidth = Math.abs(width * Math.cos(radY)) + Math.abs(height * Math.sin(radX)) + const newHeight = Math.abs(height * Math.cos(radX)) + Math.abs(width * Math.sin(radY)) + + // 计算需要的 padding + const paddingX = (newWidth - width) / 2 + const paddingY = (newHeight - height) / 2 + + return { + paddingX: `${paddingX}px`, + paddingY: `${paddingY}px` + } +}) + const componentBackgroundStyle = computed(() => { if (element.value.commonBackground && element.value.component !== 'GroupArea') { const {