You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Edit控件输入值关联HRGN实现图片分区域黑点计数

可以通过Edit输入控件实现你的需求,你遇到的问题本质是C/C++静态数组的长度要求是编译期常量,无法直接使用运行期从Edit控件读取的动态数值作为长度,改用动态内存分配或标准容器即可解决。

解决方案

  • 方案1:使用动态数组(手动管理内存)
    1. 首先读取Edit控件输入值,做合法性校验:
      int n = Edit1->Text.ToIntDef(0);
      // 增加参数校验,避免非法输入
      if (n <= 0) {
          // 可自行弹出提示要求用户输入合法的扇区数量
          return;
      }
      
    2. 动态分配HRGN数组:
      HRGN* region = new HRGN[n];
      
    3. 所有扇区处理逻辑完成后,手动释放内存避免泄漏:
      delete[] region;
      
  • 方案2:使用std::vector容器(更推荐,自动管理内存)
    1. 先引入vector头文件:
      #include <vector>
      
    2. 读取Edit输入值校验后,直接创建对应长度的HRGN容器:
      int n = Edit1->Text.ToIntDef(0);
      if (n <= 0) {
          return;
      }
      std::vector<HRGN> region(n);
      
    3. 使用方式和普通数组完全一致,通过下标region[i]访问单个HRGN对象,不需要手动释放内存,容器生命周期结束后会自动回收资源。

拿到对应长度的HRGN集合后,你就可以循环计算每个扇区的角度、坐标范围,调用GDI区域创建API(如CreatePieRgn)生成每个扇区的区域对象,再逐区域统计黑点数量即可。

内容的提问来源于stack exchange,提问作者Vorrven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:48:01