设为首页收藏本站 距【华南国际工业博览会】宝安新馆开幕 : :

Halcon视觉之家 - 51Halcon专注于机器视觉技术

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 267|回复: 1

[待解决] How to draw an xld contour on HSmartWindowControl?

[复制链接]
  • TA的每日心情
    奋斗
    2021-9-13 04:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    6

    主题

    53

    帖子

    73

    积分

    Rank: 1

    积分
    73

    切换助手验证会员

    发表于 2021-7-15 14:15:58 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    Привет, коллеги!

    У меня есть вопрос.

    Как нарисовать контур xld на HSmartWindowControl?

    Я использую новый созданный экземпляр HSmartWindowControl для рисования некоторого контура xld, и после этого я закрываю этот экземпляр и созданный контур XLD перемещается в мой HSmarrtWindowControl на форме . Но это

    неудобно ! Мне нужно нарисовать XLD ON Текущий HSmartWindowControl (SmartWin) ON Форма без создания нового экземпляра.

    Теперь я делаю это так:

    Private List <HXLDCont> Regions = new new List < HXLDCont> ();.
    ..


                bSetPatternPoints.Click + = (s, e) =>
                {
                    Объект
                    HObject ; SmartWin.HalconWindow.SetWindowParam ("flush", "false");

                    double r1, c1, r2, c2;
                    HSmartWindowControl newWin = new HSmartWindowControl ();
                    newWin.HalconWindow.OpenWindow (0, 0, 600, 600, 0, "видимый", "");
                    newWin.HalconWindow.DispObj (background_image);
                    newWin.HalconWindow.SetColor (новый HTuple (ColorToHalconColorWithOpacity (ColorTranslator.FromHtml ("# 00FF0C"), 255)));
                    newWin.HalconWindow.SetLineWidth (2);
                    HXLDCont contour = newWin.HalconWidth, "," истина "," истина ");
                    newWin.HalconWindow.CloseWindow ();

                    SmartWin.HalconWindow.DispObj (background_image);
                    SmartWin.HalconWindow.SetColor (новый HTuple (ColorToHalconColorWithOpacity (ColorTranslator.FromHtml ("# 00FF0C"), 255)));
                    SmartWin.HalconWindow.SetLineWidth (2);

                    SmartWin.HalconWindow.SetWindowParam ", false"
                    SmartWin.HalconWindow.ClearWindow ();
                    SmartWin.HalconWindow.DispObj (background_image);

                    SmartWin.HalconWindow.DispXld (контур);
                    SmartWin.HalconWindow.SetWindowParam ( "заподлицо", "истина");
                    SmartWin.HalconWindow.FlushBuffer ();

                    регионы .Add (контур);

                    SmartWinManager.RedrawAllObjects (SmartWin.HalconWindow);
                };

    Проблема в том, что мой текущий элемент управления (SmartWin) зависает после вызова оператора DrawXld. Но если я создал новый экземпляр того же класса и использовал оператор OpenWindow, тогда все работает нормально.

    Вы можете мне помочь?

  • TA的每日心情
    奋斗
    2021-9-13 04:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    6

    主题

    53

    帖子

    73

    积分

    Rank: 1

    积分
    73

    切换助手验证会员

     楼主| 发表于 2021-7-15 14:17:56 | 显示全部楼层
    Hi, colleagues!

    I have a question.

    How to draw an xld contour on HSmartWindowControl?

    I am using new created instance of HSmartWindowControl for drawing some xld contour and after that I am closed this instance and created XLD contour moved to my HSmarrtWindowControl on the form. But It is not comfortable!

    I need to draw XLD on current HSmartWindowControl (SmartWin) on the form without creating of new instance.

    Now I do this like that:

    private List<HXLDCont> regions = new List<HXLDCont>();
    ...


                bSetPatternPoints.Click += (s, e) =>
                {
                    HObject Object;
                    SmartWin.HalconWindow.SetWindowParam("flush", "false");

                    double r1, c1, r2, c2;
                    HSmartWindowControl newWin = new HSmartWindowControl();
                    newWin.HalconWindow.OpenWindow(0, 0, 600, 600, 0, "visible", "");
                    newWin.HalconWindow.DispObj(background_image);
                    newWin.HalconWindow.SetColor(new HTuple(ColorToHalconColorWithOpacity(ColorTranslator.FromHtml("#00FF0C"), 255)));
                    newWin.HalconWindow.SetLineWidth(2);
                    HXLDCont contour = newWin.HalconWindow.DrawXld("true", "true", "true", "true");
                    newWin.HalconWindow.CloseWindow();

                    SmartWin.HalconWindow.DispObj(background_image);
                    SmartWin.HalconWindow.SetColor(new HTuple(ColorToHalconColorWithOpacity(ColorTranslator.FromHtml("#00FF0C"), 255)));
                    SmartWin.HalconWindow.SetLineWidth(2);

                    SmartWin.HalconWindow.SetWindowParam("flush", "false");
                    SmartWin.HalconWindow.ClearWindow();
                    SmartWin.HalconWindow.DispObj(background_image);

                    SmartWin.HalconWindow.DispXld(contour);
                    SmartWin.HalconWindow.SetWindowParam("flush", "true");
                    SmartWin.HalconWindow.FlushBuffer();

                    regions.Add(contour);

                    SmartWinManager.RedrawAllObjects(SmartWin.HalconWindow);
                };

    The problem is that my current control (SmartWin) is freezes after calling operator DrawXld. But if I created the new instance of the same class and used operator OpenWindow, then all works fine.

    Can you help me?
    您需要登录后才可以回帖 登录 | 会员注册

    本版积分规则

    视觉培训招生

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    算子查询| 申请友链| 小黑屋| 手机版| Archiver|

    © 2015-2021 51Halcon机器视觉  X3.4  粤ICP备15095995号 粤公网安备44030602000670号

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