HSmartWindowControl鼠标缩放平移图像 画区域

笔记:C# Halcon之HSmartWindowControl:鼠标定点缩放、Region操作、比例显示 以前用的是HWindowControl控件,显示的平移缩放都是自己处理。听说过HSmartWindowControl控件,有空看了一下,觉得比HWindowControl简单,而且AttachDrawingObjectToWindow功能不错,halcon自己维护了HDrawingObject对象,刷新的时候不用写代码重绘,省心。 阅读详情
AI摘要

本文介绍使用Halcon的HSmartWindowControl进行图像显示、鼠标缩放和平移操作,以及如何通过鼠标滚轮调整图像大小。文章详细展示了如何在Windows窗体中加载图像,设置图像显示区域,并使用Halcon的操作符进行图像阈值处理和绘制矩形。

Halcon的HSmartWindowControl实现鼠标缩放平移图像以及画区域操作

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace HalconWindowZoom
{
    public partial class Form1 : Form
    {
        HalconDotNet.HObject image;
        HalconDotNet.HTuple hWindow;

        public Form1()
        {
            InitializeComponent();

            hWindow = hSmartWindowControl1.HalconWindow;//初始化窗口变量
            // 鼠标滚轮的响应函数注册
            this.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.my_MouseWheel);
        }

        private void Form1_Load(object sender, EventArgs e)
        {            
            HalconDotNet.HOperatorSet.ReadImage(out image, "E:\\Kell\\vision\\gg.png");
            HalconDotNet.HTuple imgWidth, imgHeight;
            HalconDotNet.HOperatorSet.GetImageSize(image, out imgWidth, out imgHeight);
            HalconDotNet.HOperatorSet.SetPart(hSmartWindowControl1.HalconID, 0, 0, imgHeight - 1, imgWidth - 1);
            HalconDotNet.HOperatorSet.DispObj(image, hSmartWindowControl1.HalconID);
            HalconDotNet.HTuple r1, c1, r2, c2;
            HalconDotNet.HOperatorSet.GetPart(hSmartWindowControl1.HalconID, out r1, out c1, out r2 ,out c2);

            HalconDotNet.HObject region;            
            HalconDotNet.HOperatorSet.Threshold(image, out region, 0, 55);
            HalconDotNet.HOperatorSet.SetColor(hSmartWindowControl1.HalconID, "red");
            HalconDotNet.HOperatorSet.DispObj(region, hSmartWindowControl1.HalconID);


            HalconDotNet.HOperatorSet.SetPart(hWindowControl1.HalconID, 0, 0, imgHeight - 1, imgWidth - 1);
            HalconDotNet.HOperatorSet.DispObj(image, hWindowControl1.HalconID);
            HalconDotNet.HOperatorSet.SetColor(hWindowControl1.HalconID, "red");
            HalconDotNet.HOperatorSet.DispObj(region, hWindowControl1.HalconID);
        }

        private void my_MouseWheel(object sender, MouseEventArgs e)
        {
            //System.Drawing.Point pt = this.Location;
            System.Drawing.Point pt = hSmartWindowControl1.Location;
            int leftBorder = hSmartWindowControl1.Location.X;
            int rightBorder = hSmartWindowControl1.Location.X + hSmartWindowControl1.Size.Width;
            int topBorder = hSmartWindowControl1.Location.Y;
            int bottomBorder = hSmartWindowControl1.Location.Y + hSmartWindowControl1.Size.Height;
            if (e.X > leftBorder && e.X < rightBorder && e.Y > topBorder && e.Y < bottomBorder)
            {
                MouseEventArgs newe = new MouseEventArgs(e.Button, e.Clicks,
                                                     e.X - pt.X, e.Y - pt.Y, e.Delta);
                hSmartWindowControl1.HSmartWindowControl_MouseWheel(sender, newe);
            }
        }

        private void btn_Draw_Click(object sender, EventArgs e)
        {
            hWindowControl1.BringToFront();
            hWindowControl1.Focus();

            HalconDotNet.HTuple r1, c1, r2, c2;
            HalconDotNet.HOperatorSet.GetPart(hSmartWindowControl1.HalconID, out r1, out c1, out r2, out c2);
            HalconDotNet.HOperatorSet.SetPart(hWindowControl1.HalconID, r1, c1, r2, c2);
            HalconDotNet.HOperatorSet.DispObj(image, hWindowControl1.HalconID);

            HalconDotNet.HOperatorSet.SetColor(hWindowControl1.HalconID, "blue");
            HalconDotNet.HOperatorSet.SetTposition(hWindowControl1.HalconID, r1+100, c1+100);
            HalconDotNet.HOperatorSet.WriteString(hWindowControl1.HalconID, "Draw");
            HalconDotNet.HOperatorSet.DrawRectangle1(hWindowControl1.HalconID, out r1, out c1, out r2, out c2);
            HalconDotNet.HObject rectangle;
            HalconDotNet.HOperatorSet.GenRectangle1(out rectangle, r1, c1, r2, c2);
            HalconDotNet.HOperatorSet.DispObj(rectangle, hSmartWindowControl1.HalconID);

            hSmartWindowControl1.BringToFront();
            hSmartWindowControl1.Focus();
        }

    }
}
 

Halcon的HWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI) Halcon的新版本中增加了HSmartWindowControl控件,该控件可以很方便的实现图像的缩放、拖拽、及自适应显示,虽然使用HSmartWindowControl控件虽然有诸多便利,但是该控件不支持传统HWindowControl的Draw_*函数,要想在该控件上实现ROI图形区域的绘制需要通过其他方式,本文中有详细叙述。实现的功能如下视频:Halcon的HWindowControl控件在C#WinF。 阅读详情

相关推荐

告别HWindowControl!Halcon HSmartWindowControl控件实战:实现图像自适应居中与鼠标滚轮缩放(C# WinForms)

本文深入探讨了HSmartWindowControl控件在C# WinForms中的高级应用,包括图像自适应居中、鼠标滚轮缩放等交互功能的实现。通过详细的代码示例和优化方案,帮助开发者提升工业视觉和医学影像应用的图像显示效果与用户体验,特别适合需要高效图像处理的场景。

weixin_30470643的博客 421

Halcon hWindowControl 鼠标缩放平移区域模板匹配绘制

如题所示功能,被一个技术问题卡住折腾了近大半天时间,经过不懈努力,反复验证各参数意义,终于攻克了。分享给需要的朋友。效果如下: 思路如下: 首先鼠标滚轮缩放,按压鼠标左键平移的鼠标事件组合:MouseDown,MouseUp,MouseMove,MouseWheelEvent, 具体为: void AddEvent() { hWindowCo...

elie_yang的博客 5874

HSmartWindowControl vs HWindowControl:Halcon老鸟教你如何根据项目需求做选择(附鼠标滚轮缩放实战代码)

本文深入对比HSmartWindowControl与HWindowControl在工业视觉项目中的核心差异,包括渲染管线、内存管理和交互功能。通过实战代码展示如何实现鼠标滚轮缩放等高级交互,帮助开发者根据项目需求做出最优选择,提升开发效率和用户体验。

weixin_30457551的博客 402

Halcon HSmartWindowControl初识

Halcon的新版本中增加了HSmartWindowControl控件,该控件可以很方便的实现图像的缩放、拖拽、及自适应显示,本文通过C#的WPF来说明该控件的使用。

weixin_40781100的博客 1万+

Halcon图像显示进阶:用HSmartWindowControl打造一个带轮廓高亮与交互式缩放的简易“看图软件”

本文详细介绍了如何使用Halcon的HSmartWindowControl控件构建一个专业的图像查看器,具备轮廓高亮、智能缩放和平滑交互功能。通过实战代码示例,展示了如何实现图像自适应显示、滚轮缩放、平移控制以及多图层叠加显示,帮助开发者在工业视觉和图像处理领域提升应用的专业性和用户体验。

weixin_30333885的博客 418

HSmartWindowControl:Halcon与WPF/C#机器视觉集成的核心控件详解

在机器视觉与工业自动化领域,图像处理库与上位机界面的高效集成是开发的关键挑战。Halcon作为业界领先的机器视觉软件库,提供了强大的图像处理能力,而WPF/C#则是构建现代Windows桌面应用的主流框架。HSmartWindowControl控件正是连接这两者的核心桥梁,它本质上是一个内嵌在WPF中的原生Halcon渲染与交互窗口。其技术原理在于直接绑定Halcon底层图形引擎,将WPF的鼠标、键盘事件映射为Halcon坐标系下的操作指令,实现了图像的高效原生显示与无缝交互。这一设计解决了传统方法中需要手

cumo3681的博客 328

HSmartWindowControl

HSmartWindowControlHSmartWindowControlHSmartWindowControl

Major_S的博客 1908

实战:C# Halcon之HSmartWindowControl控件高效交互开发指南

本文详细介绍了在C# Halcon开发中,如何利用HSmartWindowControl控件替代传统HWindowControl,实现高效的图像交互功能。重点讲解了鼠标定点缩放、基于HDrawingObject的Region绘制与操作,以及图像自适应窗口显示等核心技巧,帮助开发者显著提升视觉检测项目的开发效率和用户体验。

day7的博客 785

告别HWindowControl!Halcon HSmartWindowControl控件实战:从自适应显示到鼠标滚轮缩放(C# WinForms)

本文深入探讨了Halcon HSmartWindowControl控件在C# WinForms中的实战应用,从自适应显示到鼠标滚轮缩放等高级交互功能的实现。通过详细的代码示例和性能优化技巧,帮助开发者提升图像处理界面的开发效率和用户体验,特别适合工业视觉和图像处理领域的应用。

weixin_30613433的博客 377

Halcon HSmartWindowControl在WPF中的交互式视觉应用开发指南

在机器视觉与图像处理领域,高效、稳定的图像显示与交互是工业检测、测量等上位机软件开发的核心需求。Halcon作为业界领先的机器视觉库,其图形渲染引擎提供了强大的图像处理与显示能力。在.NET生态中,特别是基于WPF框架开发现代化桌面应用时,如何将Halcon的视觉功能与WPF的交互界面无缝集成,是开发者面临的关键挑战。HSmartWindowControl正是Halcon为WPF量身定制的原生显示控件,它封装了Halcon的图形渲染引擎,支持硬件加速显示HImage、HRegion等对象,并原生集成了鼠标事

weixin_30681121的博客 325

C#与Halcon交互:构建可复用图像操作类库实现缩放平移

本文详细介绍了如何使用C#与Halcon交互,构建可复用的图像操作类库,实现图像的缩放和平移功能。通过封装HWindowControl和HSmartWindowControl的鼠标事件处理,开发者可以快速集成高效的图像查看模块,显著提升工业视觉项目的开发效率。文章还提供了类库架构设计、核心算法实现及工业级应用的最佳实践。

weixin_30412167的博客 329

告别HWindowControl!在C# WinForms/WPF中,用HSmartWindowControl实现图像自适应与鼠标交互(附完整代码)

本文深入探讨了HSmartWindowControl在C# WinForms/WPF中的应用,帮助开发者实现图像自适应与高级鼠标交互功能。通过对比传统HWindowControl,详细解析了HSmartWindowControl的显示优化、交互提升和布局兼容性优势,并提供了完整的代码实现,助力打造专业级Halcon图像处理界面。

weixin_30655569的博客 492

别再手动调窗口了!Halcon HSmartWindowControl自适应显示图像保姆级教程(C# WinForms)

本文详细介绍了HSmartWindowControl在C# WinForms中的自适应显示图像技术,通过智能适配算法和实战代码示例,帮助开发者彻底解决图像变形、裁剪等问题。文章还涵盖了高级交互功能和工业级异常处理方案,显著提升开发效率和用户体验。

weixin_30736301的博客 385

Halcon图像显示避坑指南:HSmartWindowControl设置SetPart时,如何精准计算坐标防止图像显示不全?

本文详细解析了Halcon中HSmartWindowControl控件的图像显示优化技巧,重点介绍了如何通过精确计算坐标和自适应比例算法解决图像显示不全的问题。文章涵盖了从基础参数获取到交互功能增强的全方位解决方案,帮助开发者提升工业视觉应用的显示效果和用户体验。

weixin_30904593的博客 725

C# WPF仿Halcon图像控件实战:缩放平移与ROI绘制

在机器视觉上位机开发中,图像交互控件的流畅度直接影响现场调试效率。WPF凭借矢量渲染与灵活的变换模型,成为构建自定义图像显示与交互界面的理想选择。本文从图像坐标系与控件坐标系的转换原理出发,剖析基于RenderTransform的缩放平移机制,重点讲解ROI的绘制、命中测试与状态管理,并融入MVVM绑定及Halcon数据互通方案。通过工程化实践,展现如何实现以鼠标为中心的缩放、拖拽平移、多ROI管理等关键交互,其技术价值在于提升视觉定位、尺寸测量等场景的调试效率与代码复用性。文章以仿HSmartWindow

weixin_30444111的博客 314

C#调用HALCON 20,HSmartWindowControl控件高级应用,模板匹配项目

C#调用HALCON 20:HSmartWindowControl控件高级应用与模板匹配项目 本项目基于HALCON 20.0和Visual Studio 2019,展示了如何在C#中高级应用HSmartWindowControl控件,特别是在图像处理和模板匹配项目中的实际应用。该项目提供了一套完整的解决方案,展示了如何利用HSmartWindowControl控件实现图像的交互操作,如鼠标拖动、滚轮缩放,以及双击恢复默认图像尺寸和比例等功能,极大地方便了用户对图像的实时操作和查看。 项目中以模板匹配功能为例,详细展示了从图像加载、ROI(感兴趣区域)绘制,到模板生成和匹配的完整应用流程。尤其值得一提的是,该项目解决了HSmartWindowControl控件在默认情况下无法正常使用绘图功能的缺陷,通过创新的方法实现了ROI的灵活绘制和模板的高效生成。 代码结构清晰,功能模块化,且附有详细的注释,使初学者能够轻松理解和复用。这不仅是学习HALCON在C#中应用的理想起点,也是开发者在图像处理项目中提升技能的宝贵资源。无论是初学者还是有经验的开发者,都可以通过该项目深入理解HALC

HWindowControl与HSmartWindowControl:Halcon图像控件选型详解

在工业视觉上位机开发中,图像显示控件的选型直接影响交互体验与系统性能。Halcon作为机器视觉领域的主流工具,提供了HWindowControl与HSmartWindowControl两种典型控件。前者直接封装底层窗口,轻量稳定,适合纯展示与高频刷新场景;后者内置缩放、平移、坐标换算等交互机制,大幅提升ROI框选与缺陷标注的开发效率。理解两者的底层架构与性能差异,是做出合理决策的关键。结合高分辨率大图、实时取流、多窗口并存等典型应用场景的实测数据,可以清晰看出不同技术路线在资源开销和操作流畅度上的取舍。掌握

weixin_34380948的博客 628

halcon 与C#之HWindow鼠标控制图片缩放,拖动,roi 源码

学习Halcon很看了新手必备,根据网上的资料整理学习,希望给正在学习的兄弟们,小走点弯路:功能如下:Hwindow 滚轮缩放 左键实现图片平移,右键适合大小,

上一篇: C#进制转换(二进制、十六进制、十进制互转)
下一篇: Halcon单相机标定—标定板标定和自标定 线扫相机标定
c1learning
博客等级 码龄14年 43粉丝 32原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值