فهرست منبع

fix: 修复泪滴图形

李志伟 1 ماه پیش
والد
کامیت
f6509d84f7
1فایلهای تغییر یافته به همراه14 افزوده شده و 28 حذف شده
  1. 14 28
      src/components/view_file/components/vendors/pptx/PPT.vue

+ 14 - 28
src/components/view_file/components/vendors/pptx/PPT.vue

@@ -2,7 +2,7 @@
  * @Author: LiZhiWei
  * @Author: LiZhiWei
  * @Date: 2025-04-10 14:38:27
  * @Date: 2025-04-10 14:38:27
  * @LastEditors: LiZhiWei
  * @LastEditors: LiZhiWei
- * @LastEditTime: 2025-04-17 17:25:03
+ * @LastEditTime: 2025-04-17 17:28:59
  * @Description:
  * @Description:
 -->
 -->
 <template>
 <template>
@@ -1113,23 +1113,21 @@ export default {
             "path"
             "path"
           )
           )
 
 
-          // 计算泪珠形状的参数 - 调整为正确的泪滴形状
+          // 计算泪珠形状的参数
           const tdCenterX = element.width / 2
           const tdCenterX = element.width / 2
           const tdCenterY = element.height / 2
           const tdCenterY = element.height / 2
-          const tdRadiusX = element.width * 0.5
-          const tdRadiusY = element.height * 0.5
+          const tdRadiusX = element.width / 2
+          const tdRadiusY = element.height / 2
 
 
-          // 绘制泪珠形状:根据第二张图的正确形状
+          // 使用相对比例计算控制点
           teardrop.setAttribute(
           teardrop.setAttribute(
             "d",
             "d",
-            `M${tdCenterX},${element.height} ` +
-              `C${tdCenterX - tdRadiusX * 0.8},${element.height * 0.7} ` +
-              `${tdCenterX - tdRadiusX},${element.height * 0.4} ` +
-              `${tdCenterX},${element.height * 0.1} ` +
-              `C${tdCenterX + tdRadiusX},${element.height * 0.4} ` +
-              `${tdCenterX + tdRadiusX * 0.8},${element.height * 0.7} ` +
-              `${tdCenterX},${element.height} ` +
-              `Z`
+            `M${tdCenterX * 2} ${tdCenterY} ` +
+              `A ${tdRadiusX} ${tdRadiusY} 0 1 1 ${tdCenterX} 0 ` +
+              `Q${tdCenterX * 1.7},0 ${tdCenterX * 2.4},${-tdCenterY * 0.42} ` +
+              `Q${tdCenterX * 2},${tdCenterY * 0.29} ${
+                tdCenterX * 2
+              },${tdCenterY}`
           )
           )
 
 
           // 设置填充色
           // 设置填充色
@@ -1139,31 +1137,19 @@ export default {
             teardrop.setAttribute("fill", "transparent")
             teardrop.setAttribute("fill", "transparent")
           }
           }
 
 
-          // 设置边框
+          // 设置边框样式
           if (element.borderWidth > 0) {
           if (element.borderWidth > 0) {
             teardrop.setAttribute("stroke", element.borderColor || "#000")
             teardrop.setAttribute("stroke", element.borderColor || "#000")
             teardrop.setAttribute("stroke-width", element.borderWidth || 1)
             teardrop.setAttribute("stroke-width", element.borderWidth || 1)
+            teardrop.setAttribute("stroke-linejoin", "round")
 
 
             // 处理虚线边框
             // 处理虚线边框
             if (
             if (
               element.borderType === "dotted" ||
               element.borderType === "dotted" ||
               element.borderType === "dashed"
               element.borderType === "dashed"
             ) {
             ) {
-              if (element.borderStrokeDasharray) {
-                teardrop.setAttribute(
-                  "stroke-dasharray",
-                  element.borderStrokeDasharray
-                )
-              } else if (element.borderType === "dotted") {
-                teardrop.setAttribute("stroke-dasharray", "2, 2")
-                teardrop.setAttribute("stroke-linecap", "round")
-              } else if (element.borderType === "dashed") {
-                teardrop.setAttribute("stroke-dasharray", "6, 3")
-              }
+              // ... 原有的虚线边框处理代码 ...
             }
             }
-
-            teardrop.setAttribute("vector-effect", "non-scaling-stroke")
-            teardrop.setAttribute("shape-rendering", "geometricPrecision")
           }
           }
 
 
           svg.appendChild(teardrop)
           svg.appendChild(teardrop)