Переглянути джерело

'设置原点位置属性'

zhangyu 5 роки тому
батько
коміт
cb65163b5a

+ 11 - 0
saga-web-graph/src/enums/STextOrigin.ts

@@ -0,0 +1,11 @@
+/**
+ * 文本原点位置
+ *
+ * @author  张宇
+ */
+export enum STextOrigin {
+  /** 左上点    */
+  LeftTop,
+  /** 中心点    */
+  Centrum,
+} // Enum STextOrigin

+ 1 - 0
saga-web-graph/src/index.ts

@@ -44,6 +44,7 @@ import { SAnchorItem } from "./items/SAnchorItem";
 import { STextItem } from "./items/STextItem";
 import { SImageShowType } from "./enums/SImageShowType";
 import { SLineStyle } from "./enums/SLineStyle";
+import { STextOrigin } from "./enums/STextOrigin";
 
 export {
     SGraphItem,

+ 16 - 1
saga-web-graph/src/items/STextItem.ts

@@ -1,7 +1,8 @@
 import { SObjectItem } from "./SObjectItem";
-import { SPainter, SRect, SColor, SFont } from "@saga-web/draw/lib";
+import { SPainter, SRect, SColor, SFont, SPoint } from "@saga-web/draw/lib";
 import { SGraphItem } from "../SGraphItem";
 import { SLineStyle } from "../enums/SLineStyle";
+import { STextOrigin } from "../enums/STextOrigin";
 
 /**
  * 文本item
@@ -88,6 +89,16 @@ export class STextItem extends SObjectItem {
         this.update();
     }
 
+    /** 原点位置    */
+    private _originPosition: STextOrigin = STextOrigin.LeftTop;
+    get originPosition(): STextOrigin {
+        return this._originPosition;
+    }
+    set originPosition(v: STextOrigin) {
+        this._originPosition = v;
+        this.update();
+    }
+
     /** 文本绘制最大宽 */
     maxWidth: number | undefined = undefined;
 
@@ -179,6 +190,10 @@ export class STextItem extends SObjectItem {
             // 在绘制文本后计算文本的宽高
             this.width = textMaxWidth;
             this.height = (fontSize * 1.25) * this._textArr.length + (fontSize / 8);
+            // 设置原点位置(默认左上角)
+            if (this.originPosition == STextOrigin.Centrum) {
+                this.origin = new SPoint(this.width / 2, this.height / 2);
+            }
             this._painter.restore();
         }
     } // Function drawFormatText()