Browse Source

增减绘制图片的传参

haojianlong 4 năm trước cách đây
mục cha
commit
ebd39d98ec

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

@@ -1,6 +1,6 @@
 {
     "name": "@persagy-web/big",
-    "version": "2.2.44",
+    "version": "2.2.45",
     "description": "博锐尚格建筑信息化库",
     "main": "lib/index.js",
     "types": "lib/index.d.js",
@@ -41,7 +41,7 @@
         "typescript": "^3.9.3"
     },
     "dependencies": {
-        "@persagy-web/graph": "2.2.41",
+        "@persagy-web/graph": "2.2.42",
         "axios": "^0.18.0",
         "pako": "^1.0.10",
         "crypto-js": "^4.0.0",

+ 3 - 1
persagy-web-draw/README.md

@@ -4,7 +4,9 @@
 
 ### 版本日志
     无特殊说明单版本为跟随依赖版本升级
-
+    |
+    |
+    |-- 2.2.11 绘制引擎绘制图片增加裁剪功能传参
     |
     |
     |-- 2.2.10 解决 draw path的时候 只有closepath的时候 fill

+ 1 - 1
persagy-web-draw/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@persagy-web/draw",
-    "version": "2.2.10",
+    "version": "2.2.11",
     "description": "博锐尚格绘制引擎。",
     "main": "lib/index.js",
     "types": "lib/index.d.js",

+ 20 - 2
persagy-web-draw/src/SPainter.ts

@@ -568,15 +568,33 @@ export class SPainter extends SObject {
      * @param y         Y 坐标
      * @param width     宽度
      * @param height    高度
+     * @param sx        开始剪切的 x 坐标位置
+     * @param sy        开始剪切的 y 坐标位置
+     * @param swidth    被剪切图像的宽度
+     * @param sheight   被剪切图像的高度
      */
     drawImage(
         img: CanvasImageSource,
         x: number,
         y: number,
         width?: number,
-        height?: number
+        height?: number,
+        sx?: number,
+        sy?: number,
+        swidth?: number,
+        sheight?: number
     ): void {
-        this.engine.drawImage(img, x, y, width, height);
+        this.engine.drawImage(
+            img,
+            x,
+            y,
+            width,
+            height,
+            sx,
+            sy,
+            swidth,
+            sheight
+        );
     }
 
     /**

+ 19 - 2
persagy-web-draw/src/engines/SCanvasPaintEngine.ts

@@ -254,16 +254,33 @@ export class SCanvasPaintEngine extends SPaintEngine {
         x: number,
         y: number,
         width?: number,
-        height?: number
+        height?: number,
+        sx?: number,
+        sy?: number,
+        swidth?: number,
+        sheight?: number
     ): void {
         this.init((): void => {
             try {
                 // 不传宽度时,绘制图片不限制宽高
                 if (width == undefined) {
                     this._canvas.drawImage(img, x, y);
-                } else {
+                } else if (sx == undefined) {
                     // 绘制时限制图片宽高
                     this._canvas.drawImage(img, x, y, width, height as number);
+                } else {
+                    // 绘制时限制图片宽高
+                    this._canvas.drawImage(
+                        img,
+                        sx as number,
+                        sy as number,
+                        swidth as number,
+                        sheight as number,
+                        x,
+                        y,
+                        width,
+                        height as number
+                    );
                 }
             } catch (e) {
                 // 捕获 获取图片异常

+ 9 - 1
persagy-web-draw/src/engines/SPaintEngine.ts

@@ -229,13 +229,21 @@ export abstract class SPaintEngine {
      * @param y         Y 坐标
      * @param width     宽度
      * @param height    高度
+     * @param sx        开始剪切的 x 坐标位置
+     * @param sy        开始剪切的 y 坐标位置
+     * @param swidth    被剪切图像的宽度
+     * @param sheight   被剪切图像的高度
      */
     abstract drawImage(
         img: CanvasImageSource,
         x: number,
         y: number,
         width?: number,
-        height?: number
+        height?: number,
+        sx?: number,
+        sy?: number,
+        swidth?: number,
+        sheight?: number
     ): void;
 
     /**

+ 2 - 2
persagy-web-edit/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@persagy-web/edit",
-    "version": "2.2.21",
+    "version": "2.2.22",
     "description": "博锐尚格二维图形编辑器。",
     "main": "lib/index.js",
     "types": "lib/index.d.js",
@@ -40,7 +40,7 @@
         "typescript": "^3.5.3"
     },
     "dependencies": {
-        "@persagy-web/big": "2.2.44",
+        "@persagy-web/big": "2.2.45",
         "@types/uuid": "^8.0.0"
     }
 }

+ 2 - 2
persagy-web-graph/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@persagy-web/graph",
-    "version": "2.2.41",
+    "version": "2.2.42",
     "description": "博锐尚格二维图形引擎。",
     "main": "lib/index.js",
     "types": "lib/index.d.js",
@@ -40,7 +40,7 @@
         "typescript": "^3.5.3"
     },
     "dependencies": {
-        "@persagy-web/draw": "2.2.10",
+        "@persagy-web/draw": "2.2.11",
         "@types/uuid": "^8.0.0"
     }
 }

+ 5 - 2
persagy-web-graph/src/items/SImageItem.ts

@@ -98,6 +98,9 @@ export class SImageItem extends SObjectItem {
     /** 图片的高度 */
     private imgHeight: number = this.height;
 
+    /** 宽高缩放比例 */
+    widthHeightScale: number = 1;
+
     /** 图片地址 */
     private _url: string = "";
     get url(): string {
@@ -218,8 +221,8 @@ export class SImageItem extends SObjectItem {
                 width = this.width;
                 height = this.height;
             }
-            this.imgWidth = width;
-            this.imgHeight = height;
+            this.imgWidth = width * this.widthHeightScale;
+            this.imgHeight = height * this.widthHeightScale;
             // 设置原点位置(默认左上角)
             if (this.originPosition == STextOrigin.Center) {
                 this.origin = new SPoint(this.width / 2, this.height / 2);