开启左侧

C#中,Region缩放以后消失问题

[复制链接]
ljy851011 发表于 2020-6-4 22:28:52 | 显示全部楼层 |阅读模式
如果不添加DispText函数 ,显示的Region,无论怎么缩放都一直存在,添加以后只能显示文字,缩放Region立马消失,请问一下怎么解决呢?
  1. SelectedRegions = ConnectedRegions.SelectShape("area", "and", minArea, maxArea);
  2.             SelectedRegions = SelectedRegions.SelectShape("circularity", "and", 0.7, 1.0);
  3.             SelectedRegions.SmallestCircle(out row, out col, out radius);
  4.             hWindow.SetColor("green");
  5.             //显示区域
  6.             SelectedRegions.DispObj(hWindow);
  7.             hWindow.SetFont("Arial-15");
  8.             lbl_HoleNumbers.Text= "检测点数:" + row.Length.ToString();
  9.             for (int i = 0; i < row.Length; i++)
  10.             {
  11.                 double row1 = row[i] + posOffSet;
  12.                 double col1 = col[i] + posOffSet;
  13.                 double area1 = SelectedRegions.Area[i];
  14.                 double diameter1 = Math.Sqrt(area1 / 3.1415) * 2 / RulerLen * RulerRatio;
  15.                 //显示文字
  16.                 hWindow.DispText(diameter1.ToString("F2"), "image", row1, col1, "white", "box", "false");
  17.             }
复制代码

显示的Region都消失了,只剩文字

显示的Region都消失了,只剩文字
 楼主| ljy851011 发表于 2020-6-4 22:31:00 | 显示全部楼层
代码显示不全不好意思,完整代码如下
SelectedRegions = ConnectedRegions.SelectShape("area", "and", minArea, maxArea);
            SelectedRegions = SelectedRegions.SelectShape("circularity", "and", 0.7, 1.0);
            SelectedRegions.SmallestCircle(out row, out col, out radius);
            hWindow.SetColor("green");
            //显示区域
            SelectedRegions.DispObj(hWindow);
            hWindow.SetFont("Arial-15");
            lbl_HoleNumbers.Text= "检测点数:" + row.Length.ToString();
            for (int i = 0; i < row.Length; i++)
            {
                double row1 = row[i] + posOffSet;
                double col1 = col[i] + posOffSet;
                double area1 = SelectedRegions.Area[i];
                double diameter1 = Math.Sqrt(area1 / 3.1415) * 2 / RulerLen * RulerRatio;
                //显示文字
                hWindow.DispText(diameter1.ToString("F2"), "image", row1, col1, "white", "box", "false");
            }
绝地武士 发表于 2020-6-5 09:45:47 | 显示全部楼层
正常情况下,只要有图形变量的图形经过拖拉、放大缩小、刷新都会存在的,除非你的图形没有赋值给变量,就不会重绘刷新的时候消失!
 楼主| ljy851011 发表于 2020-6-5 15:58:42 | 显示全部楼层
绝地武士 发表于 2020-6-5 09:45
正常情况下,只要有图形变量的图形经过拖拉、放大缩小、刷新都会存在的,除非你的图形没有赋值给变量,就不 ...

你好,请问图形变量是什么?SelectedRegions 不是属于Hregion变量吗?为什么不添加hwindow.disptext这句话,就没问题,我试着把SelectRegions变量从函数内声明,改为函数外声明,但是还是没效果。
 楼主| ljy851011 发表于 2020-6-8 10:21:50 | 显示全部楼层
我现在用一个定时器,当发生改变的时候,就用一个定时器延时50毫秒重新显示Region和文字。但是会有短时间的黑屏,看的有点不舒服。我是通过鼠标事件来改变的,比如鼠标松开,或者hsmartwindowcontrol的hmouseup和hmousewheel 事件来做的。在paint 里面触发触发,效果不理想。

请问一下大家还有更好的方法吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表