Visionpro二次开发学习笔记8-如何将静态或交互式图形添加到CogDisplay中

如何将静态或交互式图形添加到CogDisplay中

CogDisplay支持两种类型的图形:静态图形和交互式图形。静态图形一旦添加到显示中,就无法移动或更改。静态图形不能添加提示文本(TipText)。

交互式图形在启用图形的交互属性时,可以通过程序或用户进行移动或更改。可以在交互式图形中添加提示文本。以下示例展示了如何添加提示文本。

以下步骤展示了如何将静态或交互式图形添加到CogDisplay中。

界面设计如下,添加CogDisplay控件用于显示图像,添加几个按钮用来添加图形:

在这里插入图片描述

具体步骤如下:

1. 添加引用

using Cognex.VisionPro;
using Cognex.VisionPro.Display;

2. 声明枚举

        public enum GraphicInteractivityLevel { 
                eNonInteractive=0,
                eNonSelectable=1,
                eFullyInteractive=2
            }

3. 加载默认图像

        private void Form9_Load(object sender, EventArgs e)
                {
                    cogDisplay1.Image = SyntheticImage();
                }

        private CogImage8Grey SyntheticImage()
        {
            CogImage8Grey blackImage = new CogImage8Grey();
            blackImage.Allocate(200,200);

            for (int i = 0; i < blackImage.Width; i++)
            {
                for (int j = 0; j < blackImage.Height; j++)
                {
                    blackImage.SetPixel(i,j,128);
                }
            }
            return blackImage;
        }

4. 添加交互式图形

1. 创建一个形状。本示例使用了CogEllipse。
2. 从交互形状中检索CogGraphicInteractive接口。
3. 设置图形的自由度属性。
4. 将形状添加到交互图形集合中以显示它。
        private void AddInteractive(CogColorConstants color, GraphicInteractivityLevel interactivityLevel) {
            // 1. 创建一个CogEllipse形状
            CogEllipse cogEllipse = new CogEllipse();

            if (cogDisplay1.InteractiveGraphics.Count==0)
            {
                //第一个交互图形在坐标(0,0)
                cogEllipse.CenterX = 0;
                cogEllipse.CenterY = 0;
            }
            else
            {
                //后续图形在前一个图形偏移(50,50)处
                CogEllipse previousEllipse = (CogEllipse)cogDisplay1.InteractiveGraphics[cogDisplay1.InteractiveGraphics.Count - 1];
                cogEllipse.CenterX = previousEllipse.CenterX + 50;
                cogEllipse.CenterY = previousEllipse.CenterY + 50;
            }

            // 添加提示文本。当鼠标悬停在图形上时,将显示此提示文本

            cogEllipse.TipText = $"交互式图形{cogEllipse.CenterX/50}";

            // 设置图形颜色
            cogEllipse.Color = color;

            // 2. 从交互形状中检索CogGraphicInteractive接口
            // 一些图形属性仅通过通用接口访问
            ICogGraphicInteractive graphicInteractive = cogEllipse;

            // 3. 设置图形的自由度(DOF)属性。
            // 没有机制可以使交互图形不可选择,而不使其非交互式
            // 如果所选颜色与未选颜色相同,则它们都显示为不可选择
            cogEllipse.Interactive = interactivityLevel > GraphicInteractivityLevel.eNonInteractive;
            if (interactivityLevel>GraphicInteractivityLevel.eNonSelectable)
            {
                cogEllipse.GraphicDOFEnable = CogEllipseDOFConstants.All;

            }
            else
            {
                graphicInteractive.SelectedColor = cogEllipse.Color;
                graphicInteractive.GraphicDOFEnableBase = CogGraphicDOFConstants.None;
            }

            // 根据其交互级别绘制图形的线样式和鼠标光标
            // 请参见CogStandardCursorConstants以获取所有支持的光标类型
            // 请参见CogGraphicLineStyleConstants以获取所有支持的线样式
            switch (interactivityLevel)
            {
                case GraphicInteractivityLevel.eNonInteractive:
                    //没有特殊光标
                    cogEllipse.LineStyle = CogGraphicLineStyleConstants.Dot;
                    break;
                case GraphicInteractivityLevel.eNonSelectable:
                    graphicInteractive.MouseCursor = CogStandardCursorConstants.TipTextGraphic;
                    cogEllipse.LineStyle = CogGraphicLineStyleConstants.Dash;
                    graphicInteractive.SelectedLineStyle = CogGraphicLineStyleConstants.Dash;
                    break;
                case GraphicInteractivityLevel.eFullyInteractive:
                    graphicInteractive.MouseCursor = CogStandardCursorConstants.ManipulableGraphic;
                    cogEllipse.LineStyle = CogGraphicLineStyleConstants.Solid;
                    graphicInteractive.DragLineStyle = CogGraphicLineStyleConstants.Solid;
                    break;
                default:
                    MessageBox.Show("Unrecognized interactivity level.");
                    break;
            }
            // 4. 将形状添加到交互图形集合以进行显示
            cogDisplay1.InteractiveGraphics.Add(cogEllipse,"test",false);
        }

        private void AddNonInteractive_Click(object sender, EventArgs e)
        {
            AddInteractive(CogColorConstants.Red,GraphicInteractivityLevel.eNonInteractive);
        }

        private void AddNonSelectable_Click(object sender, EventArgs e)
        {
            AddInteractive(CogColorConstants.Yellow,GraphicInteractivityLevel.eNonSelectable);
        }

        private void AddFullyInteractive_Click(object sender, EventArgs e)
        {
            AddInteractive(CogColorConstants.Green,GraphicInteractivityLevel.eFullyInteractive);
        }

5. 添加静态图形

  1. 创建一个形状。本示例使用了CogRectangleAffine
  2. 将形状添加到静态图形集合中以显示它
        double staticPositionX = 0, staticPositionY = 0;
        private void AddStatic_Click(object sender, EventArgs e)
        {
             // 初始化坐标
            if (cogDisplay1.StaticGraphics.ZOrderGroups.Count == 0)
            {
                staticPositionX = 0;
                staticPositionY = 0;
            }

            //创建静态图形
            CogRectangleAffine staticGraphic = new CogRectangleAffine();

            //设置图形属性
            staticGraphic.CenterX = staticPositionX;
            staticGraphic.CenterY = staticPositionY;

            staticGraphic.TipText = "Static graphics don't support tiptext!!!";

            staticGraphic.Color = CogColorConstants.Orange;

            staticGraphic.LineWidthInScreenPixels *= 3;
            //添加图形到显示控件
            cogDisplay1.StaticGraphics.Add(staticGraphic,"test");
            //更新坐标
            staticPositionX += 50;
            staticPositionY += 50;
        }

6. 删除所有图形

        private void RemoveGraphics_Click(object sender, EventArgs e)
            {
                cogDisplay1.StaticGraphics.Clear();
                while (cogDisplay1.InteractiveGraphics.Count>0)
                {
                    cogDisplay1.InteractiveGraphics.Remove(0);
                }
            }

7. 界面效果

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VisionPro是一款视觉系统开发平台,提供了丰富的工具和功能,用于图像处理和分析。VisionPro二次开发是指在VisionPro的基础上进行个性化定制和扩展,以满足特定应用需求。 VisionPro二次开发可以通过编写自定义的算法和脚本来实现。用户可以使用VisionPro提供的算法库和API,根据自己的需求进行算法的扩展和修改,以达到更好的图像处理效果。 此外,VisionPro还提供了友好的界面和工具,可以通过拖拽、配置等方式,快速定制图像处理的流程。用户可以根据自己的需求,选择合适的工具和参数配置,来完成特定的图像处理任务。 VisionPro二次开发也涉及到与其他系统的集成。用户可以通过编写插件或接口,将VisionPro与其他设备或软件进行连接,实现数据的共享和交互。通过与其他系统的集成,可以扩展VisionPro的应用范围,提高系统的整体效能。 总之,VisionPro二次开发是一项在原来基础上进行个性化定制和扩展的工作,通过算法的扩展、界面的定制以及与其他系统的集成,来实现更灵活、更高效的图像处理和分析功能。 ### 回答2: VisionPro是一款先进的机器视觉软件,广泛用于工业自动化领域。visionpro二次开发是指在VisionPro软件基础上进行二次开发,根据实际需求进行定制化的开发工作。 VisionPro二次开发的目的是为了满足特定的需求或解决特定的问题。通过二次开发,可以添加新的图像处理算法、优化现有的功能、增加用户界面、集成外部设备或应用程序等。这样可以提高VisionPro的适用性和灵活性,使其更好地适应各种不同的应用场景。 在进行VisionPro二次开发时,首先需要了解和熟悉VisionPro的基本功能和特性。然后根据需要,进行软件开发、算法设计、界面设计等工作。开发完成后,还需要进行测试和调试,确保开发的功能符合要求并且可以稳定运行。 VisionPro二次开发的好处是可以根据实际需求进行定制化开发,使其更好地适应特定的应用场景。这样可以提高生产效率、降低生产成本,并且提供更好的产品质量控制。此外,VisionPro二次开发还可以提供更多的功能和选择,提高系统的灵活性和扩展性。 总之,VisionPro二次开发是一项重要的工作,可以定制化开发机器视觉应用程序,提高生产效率和质量控制的能力。这需要专业的技术团队和广泛的行业经验,以确保开发的软件能够满足实际需求并可靠运行。 ### 回答3: VisionPro是一款强大的图像处理软件,可用于实现机器视觉应用。VisionPro二次开发是指在基础软件上进行定制开发,以满足特定的应用需求。 VisionPro二次开发可以通过以下几个步骤实施: 首先,需要对应用需求进行详细的调研和分析。了解客户的具体需求,明确所需实现的功能和目标。 其次,根据需求分析的结果,制定开发方案和计划。确定所需功能的开发方式和技术手段,以及开发的时间和资源投入。 接下来,进行软件定制开发。根据方案和计划,对VisionPro软件进行二次开发。根据具体的需求,可以通过编写脚本、开发插件或接口等方式,实现所需的功能扩展或定制。 在开发过程,需要对功能进行测试和调试,确保软件的稳定性和可靠性。可以利用模拟数据或实际图像数据进行测试,对开发的功能进行验证和优化。 最后,进行部署和应用集成。将二次开发VisionPro应用集成到实际的生产环境,与其他设备或系统进行连接和交互。并对系统进行使用培训,使用户能够熟练操作和维护该应用。 VisionPro二次开发的好处在于可以根据需求进行定制开发,满足特定的应用场景和功能要求。通过二次开发,可以扩展和增强VisionPro的功能,提高图像处理的精确度和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值