Ver Fonte

使用框选的形状进行群组,竟然比直接使用ShapeRange->Group()快了10倍

Hongwenjun há 6 meses atrás
pai
commit
68b5491c0c

+ 1 - 1
08_SmartGroup/ToolsBox.rc

@@ -27,7 +27,7 @@ STYLE DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_POPUP | WS_SYSMENU
 CAPTION "Tools Box"
 FONT 8, "MS Shell Dlg", 400, 0, 1
 {
-    LTEXT           "蘭雅 CorelDRAW CPG 插件 2024.8.6 智能群组版", 0, 18, 120, 97, 18, SS_LEFT, WS_EX_LEFT
+    LTEXT           "蘭雅 CorelDRAW CPG 插件 2024.8.8 智能群组版", 0, 18, 120, 97, 18, SS_LEFT, WS_EX_LEFT
     CONTROL         IDB_BITMAP1, 0, WC_STATIC, SS_BITMAP, 1, 149, 133, 75, WS_EX_LEFT
     PUSHBUTTON      "方框智能群组", IDC_RED, 73, 3, 59, 24, 0, WS_EX_LEFT
     PUSHBUTTON      "CQL轮廓色相同", IDC_CQL_OUTLINE, 5, 2, 59, 24, 0, WS_EX_LEFT

+ 2 - 2
08_SmartGroup/VBA_GMS/VbaCallCPG.bas

@@ -39,9 +39,9 @@ Sub fill_red()
 End Sub
 
 Sub BBox_DrawRectangle()
- ret = vbadll(8)
+ ret = vbadll(9)
 End Sub
 
 Sub Box_AutoGroup()
- ret = vbadll(8)
+ ret = vbadll(10)
 End Sub

+ 16 - 3
08_SmartGroup/boxAutoGroup.cpp

@@ -113,7 +113,7 @@ bool Box_AutoGroup(corel *cdr) {
     std::chrono::duration<double> duration = end - start;
     output_file << "Execution time: " << duration.count() << " seconds\n";
 
-    output_file.close();
+   // output_file.close();
   } 
 
   // 输出分组结果
@@ -130,11 +130,24 @@ bool Box_AutoGroup(corel *cdr) {
       for (int index : group.second) {
         srgp->Add(sr->Shapes->Item[index]);
       }
-      if(sr->Count >1) 
-        srgp->Group();
+      if(sr->Count >1)  {    
+        srgp->GET_BOUNDING_BOX(box); 
+        // al->CreateRectangle2(box.x, box.y, box.w, box.h, ZERO_4PC); // 使用边界 创建一个矩形
+        // box边界 转左上和右下坐标 box.x, box.y + box.h, box.x + box.w, box.y
+        auto sh = cdr->ActivePage->SelectShapesFromRectangle(box.x, box.y + box.h, box.x + box.w, box.y, false);
+        sh->Group();
+
+        // srgp->Group();  // 使用框选的形状进行群组,竟然比 直接使用 ShapeRange->Group() 快了 10 倍
+        }
       srgp->RemoveAll();
   }
 
+    auto end = std::chrono::high_resolution_clock::now(); // 结束时间
+    // 计算持续时间
+    std::chrono::duration<double> duration = end - start;
+    output_file << "使用 SelectShapesFromRectangle 框选的形状进行群组,竟然比 直接使用 ShapeRange->Group() 快了 10 倍\nExecution time: " << duration.count() << " seconds\n";
+
+    output_file.close();
   EndOpt(cdr);
   return true;
 }