Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)

2016-12-04 20:11 362人阅读 评论(4) 收藏 举报
 分类:
Halcon

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

目录(?)[+]

 

HWindowControl控件初步使用

  最近在学习新的视觉处理工具–Halcon软件包,本人学习的主要是HDevelop、Halcon与C#混编以及Halcon与C++混编。这里再多缀一句:11版本后C++编程,包含的是halconcpp文件夹,10版本前包含的是cpp文件夹,我主要学习的是11版本以后的C++编程。 
  此篇文章是为了记录学习过程中的一些知识点而已,当然后续的文章也都是如此。好了,废话不多说了,直奔主题吧。在WinForm中使用HWindowControl控件显示图片时,大伙最关心的应该就是图像能否完全显示出来的问题。下面将介绍下我学习过程中的收获,最后会附上程序源码。

HWindowControl控件和控件中的显示区域认识

  HWindowControl是显示控件,但关系到显示图像部分的是此控件的“子窗口”HWindowControl.HalconWindow。下面我将用“控件”和“显示区域”来分别代称上述二位。 
  其实,可以将“控件”和“显示区域”两者分开来看。“控件”是控件,“显示区域”是显示区域,两者相互独立,互不干扰。为什么这样说,因为这样非常有助于理解以下两个概念:“控件”的大小和“显示区域”的大小。另,可以将“显示区域”理解成控件中的黑色区域。 
  下面我将直接用实例说明。

HWindowControl的实例应用

  首先,看下图的红色标记区域: 
   
  注意图中的红色标记处,两处都是关于大小的属性。标记1处的属性是ImagePart,这个其实是“显示区域”的大小(默认的好像是640×480,这里我也没去修改它,因为我程序就是来说明这点的),代码里也需要使用“显示区域”去设置,“控件”自身不能设置。标记2处有两个属性,这两个属性的值是一起变化的(相同的),用来表示“控件”的大小。这里我设置的是512×512,因为我程序是来显示经典的lena照片,其大小正是512×512。 
  以上部分是为了给大家一个直观印象,下面就直接进入程序介绍。下图是程序界面。 
   
  程序中共两个Button,标记1处的Button(OpenImage)的功能是打开图像并显示图像,标记3处的Button(SetImagePart)的功能是修改“显示区域大小”并显示图像。标记2处是用来设置“显示区域”的Width和Height。对了,初次打开软件时,标记2处显示的是当前HWindowControl中显示区域的Width和Height。此处显示的是640×480,和我刚才控件属性(ImagePart)那边一致。此时,SetImagePart也处于禁用状态,因为还没有图像传进来啦。 
  单击标记1处Button(OpenImage),效果如下图所示。 
   
  成功打开图像后,SetImagePart按钮生效。下面我们就来修改显示区域。首先将“显示区域”设置成lena图像的实际大小512×512,然后单击SetImagepart按钮。效果如下图所示: 
   
  此时lena图像已经完整的现实出来了。Ok,我们再将“显示区域”设置成256×256,看会是什么结果?设置好值后,单击SetImagePart按钮。效果如下图所示: 
   
  此时,“显示区域”只显示了图像的四分之一。是否已经理解了显示区域大小的概念了?….无论理解与否,我们继续设置“显示区域”为1024×1024,然后单击SetImagePart按钮。效果如下图所示: 
   
  此时,完整的图像只能占据“显示区域”的四分之一。至此,小程序介绍完毕。

关键代码片段

  第一次打开程序时,获取控件中“显示区域”大小。代码如下:

textBox_Width.Text = hWindowControl1.ImagePart.Width.ToString();
textBox_Height.Text = WindowControl1.ImagePart.Height.ToString();
  • 1
  • 2
  • 1
  • 2

  SetImagePart按钮功能。代码如下:

int dWidth = Convert.ToInt32(textBox_Width.Text.Trim());
int dHeight = Convert.ToInt32(textBox_Height.Text.Trim());
if (dWidth > 0 && dHeight > 0)
{
hoWindow.ClearWindow();
hoWindow.SetPart(0, 0, dHeight - 1, dWidth - 1);
hoImage.DispObj(hoWindow);
}
else
{
MessageBox.Show("The width of ImagePart is <= 0 or The height of ImagePart is <= 0");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

  呃….悲剧了….好像不能添加附件,程序源代码找机会再上传到下载那边。

Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)的更多相关文章

  1. WPF控件--利用Winform库中的NotifyIcon实现托盘小程序

    WPF控件--NotifyIcon   运行界面如下所示:            图1                                             图2 代码很少,如下所示 ...

  2. C#与Halcon联合编程之用PictureBox控件替代HWindowControl控件

    在使用HALCON和C#联合编程,有时候要使用halcon的HWindowControl控件,但是我发现,HWindowControl的图片显示控件,不能使用GDI+绘制ROI,不知道为什么,反正我测 ...

  3. Halcon - 图像随 HWindowControl 控件缩放的同时,保持图像的长宽比例不变

    背景 通常情况下,图像是填充满 HWindowControl 控件,并随其缩放的.此时只需要将 set_part 的参数设置成图像的大小即可. 不过,有时候,在一些测量任务中,我们对原始图像的长宽比敏 ...

  4. .NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件

    系列目录     [已更新最新开发文章,点击查看详细] WebView2组件支持在WinForm.WPF.WinUI3.Win32应用程序中集成加载Web网页功能应用.本篇主要介绍如何在WinForm ...

  5. .NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件

    系列目录     [已更新最新开发文章,点击查看详细] 在我的博客<.NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件>中介绍了WinForm ...

  6. Windows Phone 8.1 新特性 - 控件之应用程序栏

    2014年4月3日的微软Build 2014 大会上,Windows Phone 8.1 正式发布.相较于Windows Phone 8,不论从用户还是开发者的角度,都产生了很大的变化.接下来我们会用 ...

  7. Atitit. Gui控件and面板----程序快速启动区--最佳实践Launchy ObjectDock-o0g

    Atitit.  Gui控件and面板----程序快速启动区--最佳实践Launchy ObjectDock-o0g 两个方式::: 键盘式::先用热键呼叫出QS,然后开始输入程序中的部分字母,按En ...

  8. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】

    问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...

  9. Scroll View 控件以Thumbnail的方式显示一个目录的全部图片,相似图片浏览器

    MAC : XCode -> Scroll View 控件以Thumbnail的方式显示一个目录的全部图片,类似图片浏览器 STEP1:将两个目录复制到project里面ImageBrowser ...

随机推荐

  1. 【scala】继承

    Scala中的继承与Java有着显著的不同. 抽象类abstract class abstract class Car{//抽象类 val carBrand:String;//抽象字段,一个没有被初始 ...

  2. SpringBoot_10_打成jar包后使用外部配置文件中的配置来启动工程

    一.前言 三.参考资料 1.Spring Boot配置文件放在jar外部

  3. mysql int(3)与int(11)的区别

    总结,int(M) zerofill,加上zerofill后M才表现出有点点效果,比如 int(3) zerofill,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果i ...

  4. java事务(三)——自己实现分布式事务

    在上一篇<java事务(二)——本地事务>中已经提到了事务的类型,并对本地事务做了说明.而分布式事务是跨越多个数据源来对数据来进行访问和更新,在JAVA中是使用JTA(Java Trans ...

  5. [AOP] 6. 一些自定义的Aspect - 方法的重试(Retry)

    前面的一系列文章介绍了AOP的方方面面: AOP的由来以及快速上手 AOP的两种实现-Spring AOP以及AspectJ Spring AOP中提供的种种Aspects - Tracing相关 S ...

  6. linux(redhat) mysql 的安装

    教程链接 注意 1.检查版本32/64位的时候 输入 name -a 输出为 Linux localhost.localdomain 2.6.18-53.el5 #1 SMP Wed Oct 10 1 ...

  7. loader疑惑

    今天写自己的loader管理类时,发现一个问题,如果证明flash是并发加载资源的呢? var loader:Loader=new Loader; loader.contentLoaderInfo.a ...

  8. [Luogu1527][国家集训队]矩阵乘法

    luogu 题意 给你一个\(N*N\)的矩阵,每次询问一个子矩形的第K小数.(居然连修改都不带的) \(N\le500,Q\le60000\) sol 整体二分+二维树状数组裸题. 复杂度是\(O( ...

  9. 双色球基础分析--SQL

    代码是心血来潮编写得,就象买彩票一样,为国家做贡献:首先建立一个表,表得数据可以从福利彩票网站上获得,自己一个一个得录入进去先: 表结构为: ) NOT NULL ,  --期数    [F1] [i ...

  10. UIScrollView的左右滑动和侧滑手势冲突的解决办法

    转载自:https://blog.csdn.net/kst_123/article/details/77762811 当ViewController中添加了一个全屏的UIScrollView的时候,U ...