瀏覽代碼

1、测量库更新

guanxinyi 8 月之前
父節點
當前提交
ab983b9ff3

+ 6 - 0
lib/process/calcuators/urm_calcuators/urm_shell_den_measure.dart

@@ -36,12 +36,18 @@ class URMShellDenMeasureCal extends URMShellMeasureCal {
       if (outResult != null && result != null) {
         final feature = ref.feature!;
         if (feature is! ShellImageFeature) return;
+        feature.isNeedPaintColors = true;
         if (outResult.outerExterPoints != null) {
           List<DPoint> outerExterPoints = [];
+          List<DPoint> interExterPoints = [];
           outResult.outerExterPoints?.forEach((element) {
             outerExterPoints.add(urmApplication.viewToLocal(element));
           });
+          param!.srcDPoints?.forEach((element) {
+            interExterPoints.add(urmApplication.viewToLocal(element));
+          });
           feature.outerExterPoints = outerExterPoints;
+          feature.interExterPoints = interExterPoints;
         }
         feature.updateStringValue(
             ItemOutputMeta("Placeholder", "Placeholder", VidUsUnit.None),

+ 6 - 0
lib/process/calcuators/urm_calcuators/urm_shell_den_vel_measure.dart

@@ -40,12 +40,18 @@ class URMShellDenVelMeasureCal extends URMShellMeasureCal {
       if (denresult != null && velresult != null) {
         final feature = ref.feature!;
         if (feature is! ShellImageFeature) return;
+        feature.isNeedPaintColors = true;
         if (outresult.outerExterPoints != null) {
           List<DPoint> outerExterPoints = [];
+          List<DPoint> interExterPoints = [];
           outresult.outerExterPoints?.forEach((element) {
             outerExterPoints.add(urmApplication.viewToLocal(element));
           });
+          param!.srcDPoints?.forEach((element) {
+            interExterPoints.add(urmApplication.viewToLocal(element));
+          });
           feature.outerExterPoints = outerExterPoints;
+          feature.interExterPoints = interExterPoints;
         }
         feature.updateStringValue(
             ItemOutputMeta("Placeholder", "Placeholder", VidUsUnit.None),

+ 5 - 0
lib/process/calcuators/urm_calcuators/urm_shell_vel_measure.dart

@@ -45,10 +45,15 @@ class URMShellVelMeasureCal extends URMShellMeasureCal {
         if (feature is! ShellImageFeature) return;
         if (outresult.outerExterPoints != null) {
           List<DPoint> outerExterPoints = [];
+          List<DPoint> interExterPoints = [];
           outresult.outerExterPoints?.forEach((element) {
             outerExterPoints.add(urmApplication.viewToLocal(element));
           });
+          param!.srcDPoints?.forEach((element) {
+            interExterPoints.add(urmApplication.viewToLocal(element));
+          });
           feature.outerExterPoints = outerExterPoints;
+          feature.interExterPoints = interExterPoints;
         }
         for (var output in ref.meta.outputs) {
           if (output.name == MeasureTerms.URMVelMax) {

+ 40 - 1
lib/process/primitives/urm_measure/urm_shell_measure.dart

@@ -197,8 +197,10 @@ class ShellImageFeature extends TraceFeature {
   ShellImageFeature(AreaItemAbstract refItem) : super(refItem);
 
   List<DPoint> outerExterPoints = [];
+  List<DPoint> interExterPoints = [];
+  bool isNeedPaintColors = false;
 
-  /// 绘制灌注图
+  /// 绘制rim 外环
   @override
   void paint(Canvas canvas, Size size) {
     super.paint(canvas, size);
@@ -211,6 +213,43 @@ class ShellImageFeature extends TraceFeature {
     }).toList();
 
     canvas.drawDashPointsLine(pixelPoints, 1, 10, paintLinePan, close: true);
+    if (isNeedPaintColors) {
+      final inPixelPoints = interExterPoints
+          .map((e) => convert2ViewPoint(size, e).toOffset())
+          .toList();
+      // 创建一个蓝色带透明度的Paint对象,用于填充区域
+      Paint outPaint = Paint()
+        ..color = const Color(0xFF2897ea).withOpacity(0.5)
+        ..style = PaintingStyle.fill;
+
+      // 创建一个蓝色带透明度的Paint对象,用于填充区域
+      Paint innerPaint = Paint()
+        ..color = const Color(0xFF57ED26).withOpacity(0.5)
+        ..style = PaintingStyle.fill;
+      // 创建Path并连接点
+      Path path = Path();
+      Path pathb = Path();
+      if (pixelPoints.isNotEmpty) {
+        path.moveTo(pixelPoints[0].dx, pixelPoints[0].dy);
+        for (var point in pixelPoints) {
+          path.lineTo(point.dx, point.dy);
+        }
+        path.close(); // 闭合路径
+      }
+      if (inPixelPoints.isNotEmpty) {
+        pathb.moveTo(inPixelPoints[0].dx, inPixelPoints[0].dy);
+        for (var point in inPixelPoints) {
+          pathb.lineTo(point.dx, point.dy);
+        }
+        pathb.close(); // 闭合路径
+      }
+
+      // 绘制路径
+      canvas.drawPath(path, outPaint);
+
+      // 绘制路径
+      canvas.drawPath(pathb, innerPaint);
+    }
   }
 }