【问题标题】:How to use Halcon HOperatorSet.SetDrawingObjectCallback如何使用 Halcon HOperatorSet.SetDrawingObjectCallback
【发布时间】:2020-11-04 13:31:47
【问题描述】:

我很难找到如何在 C# 中使用 HOperatorSet.SetDrawingObjectCallback(HTuple drawID, HTuple drawObjectEvent, HTuple callbackFunction) (Docu),特别是回调 HTuple callbackFunction 的部分。除了中文网站(Link),我找不到任何关于如何正确执行此操作的示例。该网站本身也不是很容易找到,并且那里使用的代码会引发致命异常。为了让其他人有更好的资源来了解如何使用HOperatorSet.SetDrawingObjectCallback 方法,我决定创建这个问题并自己回答。

【问题讨论】:

    标签: c# .net halcon


    【解决方案1】:

    这里的关键是HTuple callbackFunction 是一个函数指针,它指向HDrawingObject.HDrawingObjectCallback 类型的委托。然后,此委托链接到您正确的回调方法。回调方法包括intptrdrawingIdwindowId 以及string type

    这是代码 sn-p,希望它能让你的日子过得更好:

    public class SomeClass
    {
        public SomeClass()
        {
            DrawingObjectCallback = DrawingObjectCallbackHandler;
        }
        
        public void AddDrawingObject()
        {
            HOperatorSet.CreateDrawingObjectCircle(50, 50, 100, out var drawId);
            
            //Get the pointer to HDrawingObjectCallback which links to our handler
            var ptr = Marshal.GetFunctionPointerForDelegate(DrawingObjectCallback);
                    
            //Select the events you want to listen to
            var listenTo = new HTuple("on_resize", "on_drag");
            
            //Finally call the method
            HOperatorSet.SetDrawingObjectCallback(drawId, listenTo, ptr);
            
            HOperatorSet.AttachDrawingObjectToWindow(HalconWindow.HalconID, drawId);
        }
    
        public HDrawingObject.HDrawingObjectCallback DrawingObjectCallback { get; }
        public void DrawingObjectCallbackHandler(IntPtr drawId, IntPtr windowHandle, string type)
        {
            int id = new HTuple(drawId);
            int windowId  = new HTuple(windowHandle);
            
            //Now you have the two Ids as integers and can work from here!
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2020-12-12
      • 2020-08-29
      • 2019-11-14
      • 2021-02-27
      • 2021-01-13
      • 2020-12-20
      • 2020-12-13
      • 2020-10-28
      相关资源
      最近更新 更多