Halcon WPF 开发学习笔记(3):WPF+Halcon初步开发

文章目录

  • 前言
  • 在MainWindow.xaml里面导入Halcon命名空间
    • WPF简单调用Halcon
    • 创建矩形

前言

本章会简单讲解如何调用Halcon组件和接口,因为我们是进行混合开发模式。即核心脚本在平台调试,辅助脚本C#直接调用。

在MainWindow.xaml里面导入Halcon命名空间

在这里插入图片描述

<Window x:Class="Hello_Halcon.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Hello_Halcon"
        xmlns:halcon="clr-namespace:HalconDotNet;assembly=halcondotnet"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        
        <!--添加Halcon图像导入事件-->
        <Button Click="Button_Click" Content="加载图像"/>
        <!--添加Halcon窗口-->
        <halcon:HSmartWindowControlWPF Grid.Row="1" x:Name="hSmart"/>
    </Grid>
</Window>


按钮事件

private void Button_Click(object sender, RoutedEventArgs e)
{
    //添加文件路径
    string fileName = "D:\\workspace\\program\\Halcon\\Images\\1.png\"";

    var image = new HImage(fileName);

    int width, height;
    image.GetImageSize(out width, out height);

    hSmart.HalconWindow.SetPart(0,0,width,height);
    hSmart.HalconWindow.DispObj(image);
    //自适应屏幕
	hSmart.SetFullImagePart();

}

如果编译报错

在这里插入图片描述

安装System.Drawing.Common
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果出现上面问题记得看看有没有写hSmart.SetFullImagePart();

完美解决在我这篇文章中

Halcon WPF 开发学习笔记:HSmartWindowControlWPF正常加载

WPF简单调用Halcon

添加两个按钮


<Window.Resources>
    <Style TargetType="Button" x:Key="MarginButton">
        <Setter Property="Margin" Value="3" />
    </Style>
</Window.Resources>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto" />
        <RowDefinition />
    </Grid.RowDefinitions>

    <!--添加Halcon图像导入事件-->
    <StackPanel Orientation="Horizontal">
        <Button Click="Button_Click" Content="加载图像"
                Style="{StaticResource MarginButton}" />
        <Button Click="Button_Click_1" Content="创建圆形"
                Style="{StaticResource MarginButton}" />
        <Button Click="Button_Click_2" Content="创建矩形"
                Style="{StaticResource MarginButton}" />

    </StackPanel>
    <!--添加Halcon窗口-->
    <halcon:HSmartWindowControlWPF Grid.Row="1" x:Name="hSmart" />
</Grid>

添加按钮事件

 /// <summary>
 /// 画圆
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Button_Click_1(object sender, RoutedEventArgs e)
 {
     //创建一个圆形,圆心为(100,100),半径为50
     var drawingObject = HDrawingObject.
         CreateDrawingObject(HDrawingObject.HDrawingObjectType.CIRCLE, new HTuple[] { 100, 100, 50 });
     //临时存放List
     drawingObjects.Add(drawingObject);

     //将圆画再hSmart画布上面
     hSmart.HalconWindow.AttachDrawingObjectToWindow(drawingObject);

 }

实现效果

在这里插入图片描述
这个圆是可以拖动的
在这里插入图片描述

创建矩形

和创建圆形一致,不再说明

private void Button_Click_2(object sender, RoutedEventArgs e)
{
    //创建一个矩形
    var drawingObject = HDrawingObject.
        CreateDrawingObject(HDrawingObject.HDrawingObjectType.RECTANGLE1, new HTuple[] { 100, 100, 150,250 });
    //临时存放List
    drawingObjects.Add(drawingObject);

    //将矩形再hSmart画布上面
    hSmart.HalconWindow.AttachDrawingObjectToWindow(drawingObject);
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/135710.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode—765.情侣牵手【困难】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—765.情侣牵手 并查集置换环思路 参考自ylb 实现代码 class Solution { public:int minSwapsCouples(vector<int>& row) {int n row.size();int len n / 2;vector<int> p(len);iota(p.begin(), p.…

探索项目管理软件的多重用途和益处

项目管理软件俨然成了当下项目管理话题中的热门词条&#xff0c;作为一个辅助性管理工具&#xff0c;项目管理软件有什么用&#xff1f;真的值得购入吗&#xff1f; 什么是项目管理软件 顾名思义&#xff0c;项目管理软件就是指在项目管理过程使用的各种软件工具。项目管理软件…

「Verilog学习笔记」4bit超前进位加法器电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 timescale 1ns/1nsmodule lca_4(input [3:0] A_in ,input [3:0] B_in ,input C_1 ,output wire CO ,output wire [3:0] …

docker启动某个镜像一直restarting状态

因为微服务学习的需要&#xff0c;就需要在虚拟机中安装一下Nacos&#xff0c;可哪儿能想到使用docker ps命令一直显示nacos的状态是restarting。 经过一番测试&#xff0c;发现并不是执行代码的问题。上网查了一下&#xff0c;也找不到合适的答案&#xff0c;终于查到了是doc…

高级项目管理总结

目录 一、背景介绍二、思路&方案三、过程1.升维思考2.结构化3.心理、知识阶段检验4.微观 四、总结 一、背景介绍 天性对学习对考试充满敌意的我&#xff0c;转变为依赖学习谋生&#xff0c;再到后来书中自有黄金屋&#xff0c;到现在学习对我而言就如同一日三餐&#xff1…

【linux】centos7 yum安装mysql 5.7

查看系统中是否已安装 MySQL 服务 yum list installed | grep mysql下载 mysql57的 yum 源 wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm查看下载 ll 安装源 rpm -ivh mysql57-community-release-el7-8.noarch.rpm安装 MySQL yum install mysql…

TMSRL

Z是学到的子空间表征 辅助信息 作者未提供代码

HPV专家谭巍主任讲述:家庭日常有效预防HPV病毒的办法

HPV&#xff0c;即人乳头瘤病毒&#xff0c;是一种常见且具有传染性的微小DNA病毒。可以通过直接接触感染&#xff0c;也可以通过间接接触感染。在家庭生活中&#xff0c;预防HPV病毒传播十分重要。为了提高大众防范意识&#xff0c;下面劲松HPV防治诊疗中心主任谭巍将介绍一些…

yolo系列报错(持续补充ing)

文章目录 export GIT_PYTHON_REFRESHquiet解决 没有pt权重文件解决 python文件路径报错解决 读取文件列名报错解决 导入不同文件夹出错解决 megengine没有安装解决然后你发现它竟然还没有用 export GIT_PYTHON_REFRESHquiet 设置环境变量 GIT_PYTHON_REFRESH &#xff0c;这个…

JavaScript从入门到精通系列第三十五篇:JavaScript中的DOM简介

文章目录 前言 1&#xff1a;对象分类 2&#xff1a;宿主对象 一&#xff1a;DOM 1&#xff1a;dom简介 2&#xff1a;Dom概念图示 二&#xff1a;节点 1&#xff1a;节点概述 2&#xff1a;常用节点分类 3&#xff1a;节点模型示意图 4&#xff1a;节点属性 5&…

fetch函数没有默认超时时间的配置吗

chatgpt&#xff1a; https://chat.xutongbao.top/ 截至我知识的最后更新时间&#xff08;2023年&#xff09;&#xff0c;原生的 fetch API 在大多数浏览器中并没有内置的默认超时时间。这意味着如果你没有明确地设置一个超时期限&#xff0c;fetch 请求可能会永远挂起&…

数据结构-静态查找、二分查找、分块查找

静态查找 在静态查找表中&#xff0c;我们只允许下面两件事&#xff1a; 1.在查找表中查找某个记录是否在表中 2.查找表中记录的各个属性 动态查找 在动态查找表中&#xff0c;我们允许四件事&#xff1a; 1.在查找表中查找某个记录是否在表中 2.查找表中记录的各个属性…

国际阿里云:Windows实例中数据恢复教程!!!

在处理磁盘相关问题时&#xff0c;您可能会碰到操作系统中数据盘分区丢失的情况。本文介绍了Windows系统下常见的数据盘分区丢失的问题以及对应的处理方法&#xff0c;同时提供了使用云盘的常见误区以及最佳实践&#xff0c;避免可能的数据丢失风险。 前提条件 已注册阿里云账…

财务报告是什么

财务报告是什么 财务报告是企业对外提供的反映企业某一特定日期的财务状况和某一会计期间的经营成果、现金流量等会计信息的文件。 根据财务报告的定义&#xff0c;财务报告具有以下几层含义&#xff1a;一是财务报告应当是对外报告&#xff0c;其服务对象主要是投资者、债权人…

HCIA-经典综合实验(一)

经典综合实验&#xff08;一&#xff09; 实验拓扑配置步骤第一步&#xff1a;配置二层VLAN第二步&#xff1a;配置IP地址第三步&#xff1a;配置DHCP服务第四步&#xff1a;配置路由协议OSPF第五步&#xff1a;配置ACLNATTelnet 配置验证测试PC1能不能telnet登录到R1测试所有P…

Ubuntu取消sudo的输入密码

Ubuntu最近要安装软件&#xff0c;每次sudo都要输入一次密码&#xff0c;感觉很麻烦&#xff0c;于是想能不能设置为不输入密码&#xff0c;在网上找了一下解决办法。 主要参考这篇文章&#xff1a; Ubuntu取消sudo时输入密码 上面这篇文章使用的是vim&#xff0c;但是按照博…

外部董事的职责与作用

&#xff08;一&#xff09;监督公司的管理与运营 外部董事在公司治理中的一个重要职责就是监督公司的管理与运营&#xff0c;监督公司管理层是否有效执行公司战略、规章制度和内控机制&#xff0c;帮助公司识别管理和运营上的问题&#xff0c;从而提供正确的决策和解决方案。比…

泉峰控股发布业务白皮书, 释放中国芯片企业要发展成全球领先的信心与决心

近日,多元化芯片全球供应商泉峰控股发布了一份题为《致力于中国芯片产业自立自强》的业务白皮书。白皮书系统阐述了泉峰控股企业发展策略和业务规划,充分体现出中国芯片企业要在全球范围内实现技术突破、市场扩张的信心与决心。 白皮书首先分析了当前全球芯片产业的发展态势。在…

js 加密解密 cryptojs(对称加密库)

js 加密解密可以使用 crypto-js 这是一个对称加密的库&#xff0c; 可以使用 AES DES 但没有 rsa 等非对称加密的方法 安装方法 npm install crypto-js 它可以进行 MD5 SHA-1 SHA-256 Base64 AES DES 等算法和加密 import crypto from "crypto-js"let md5binary cry…

docker安装AWVS 23.9.231005181

本文声明仅AWVS用作学习使用 将镜像文件secfa_awvs.tar复制到目标机器上。 我的百度网盘文件路径&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1frbOH4UZlMz9bMXyZs1o0g 提取码&#xff1a;na6y –来自百度网盘超级会员V6的分享 在目标机器上&#xff0c;使用以下命…