Browse Source

item旋转;更新包

haojianlong 5 năm trước cách đây
mục cha
commit
67081feb42

+ 2 - 2
saga-web-big/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@saga-web/big",
-    "version": "1.0.103",
+    "version": "1.0.104",
     "description": "上格云建筑信息化库",
     "main": "lib/index.js",
     "types": "lib/index.d.js",
@@ -42,6 +42,6 @@
         "typescript": "^3.9.3"
     },
     "dependencies": {
-        "@saga-web/graph": "2.1.120"
+        "@saga-web/graph": "2.1.121"
     }
 }

+ 1 - 1
saga-web-graph/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@saga-web/graph",
-    "version": "2.1.120",
+    "version": "2.1.121",
     "description": "上格云二维图形引擎。",
     "main": "lib/index.js",
     "types": "lib/index.d.js",

+ 12 - 5
saga-web-graph/src/SGraphItem.ts

@@ -106,7 +106,14 @@ export class SGraphItem extends SObject {
     } // Get inverseScale
 
     /** 旋转角度 */
-    rolate: number = 0;
+    _rotate: number = 0;
+    get rotate(): number {
+        return this._rotate;
+    } // Get rotate
+    set rotate(v: number) {
+        this._rotate = v;
+        this.update();
+    } // Set rotate
 
     /** 是否可见 */
     private _visible: boolean = true;
@@ -192,7 +199,7 @@ export class SGraphItem extends SObject {
                 // item位移到指定位置绘制
                 painter.translate(item.x, item.y);
                 painter.scale(item.scale, item.scale);
-                painter.rotate(item.rolate);
+                painter.rotate(item.rotate);
 
                 // 如果不进行变形处理,则取消painter的变型操作
                 if (!item.isTransform) {
@@ -336,7 +343,7 @@ export class SGraphItem extends SObject {
         for (let item of list) {
             m.translate(item.x, item.y);
             m.scale(item.scale, item.scale);
-            m.rotate(item.rolate);
+            m.rotate(item.rotate);
 
             // 如果不进行变形处理,则取消painter的变型操作
             if (!item.isTransform) {
@@ -624,9 +631,9 @@ export class SGraphItem extends SObject {
         event: SMouseEvent
     ): SMouseEvent {
         let ce = new SMouseEvent(event);
-        // ce.matrix.rotate(0, 0, child.rolate);
         ce.matrix.translate(child.x, child.y);
         ce.matrix.scale(child.scale, child.scale);
+        ce.matrix.rotate(0, 0, child.rotate);
 
         if (!child.isTransform) {
             ce.matrix.scale(child._inverseScale, child._inverseScale);
@@ -672,10 +679,10 @@ export class SGraphItem extends SObject {
     private toParentChange(x: number, y: number): SPoint {
         const m = new SMatrix();
         m.scale(this.scale, this.scale);
-        m.rotate(this.rolate);
         if (!this.isTransform) {
             m.scale(this._inverseScale, this._inverseScale);
         }
+        m.rotate(this.rotate);
 
         const mp = new SPoint(x, y).matrixTransform(m);
         return new SPoint(mp.x, mp.y);

+ 1 - 1
saga-web-graph/src/SGraphScene.ts

@@ -282,9 +282,9 @@ export class SGraphScene {
         let se = { ...event };
         se.matrix = new SMatrix();
         if (this.view) {
-            // se.matrix.rotate(this.view.rotate);
             se.matrix.translate(this.view.origin.x, this.view.origin.y);
             se.matrix.scale(this.view.scale, this.view.scale);
+            se.matrix.rotate(this.view.rotate);
         }
         se.matrix.multiply(item.scene2itemMattrix());
         let p = new SPoint(event.offsetX, event.offsetY).matrixTransform(

+ 2 - 2
saga-web-graph/src/SGraphView.ts

@@ -281,9 +281,9 @@ export class SGraphView extends SCanvasView {
 
         // 绘制场景
         painter.save();
-        // painter.rotate(this.rotate);
         painter.translate(this.origin.x, this.origin.y);
         painter.scale(this.scale, this.scale);
+        painter.rotate(this.rotate);
         this.scene.drawScene(painter, new SRect());
         painter.restore();
 
@@ -431,9 +431,9 @@ export class SGraphView extends SCanvasView {
      */
     private toSceneMotionEvent(event: MouseEvent): SMouseEvent {
         let se = new SMouseEvent(event);
-        // se.matrix.rotate(this.rotate);
         se.matrix.translate(this.origin.x, this.origin.y);
         se.matrix.scale(this.scale, this.scale);
+        se.matrix.rotate(this.rotate);
 
         const mp = new SPoint(event.offsetX, event.offsetY).matrixTransform(
             se.matrix.inversed()