Halcon——C#中在HWindow上显示字符串遇见的问题及解决方案

这篇具有很好参考价值的文章主要介绍了Halcon——C#中在HWindow上显示字符串遇见的问题及解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

在视觉项目中通常会用HWindiw显示图像处理过后的内容,并推送一些数据信息。在实际实现的过程中,遇到了一些小问题。网上的答案也并不是很详细全面,在此做自己的总结。


一、HWindow上显示字符串的两种方式

1. DispText函数

c#代码形式:HalconWindow是HWindow类型。

	public void DispText(HTuple stringVal, string coordSystem, HTuple row, HTuple column, HTuple color, HTuple genParamName, HTuple genParamValue);
	//参数意义
	//stringVal:想显示的文本
	//coordSystem:显示的容器(显示在HWindow的话就是‘window’)
	//row:显示框的左上角行号
	//column:显示框的左上角列号
	//color:显示的颜色
	//genParamName:一个字符串数组,包含要设置的其他参数的名称。可以为空数组
	//genParamValue:一个与GenParamName对应的值数组,包含要设置的参数的值。可以为空数组

	//代码案例
	this.HalconWindow.DispText(item.Message, "window", item.Y, item.X, item.Color, new HTuple(), new HTuple());

ps:genParamName中可以参数详情

  • ‘font’: 设置字体的名称。例如,‘font’ => ‘Arial’。
  • ‘size’: 设置字体的大小。例如,‘size’ => 20。
  • ‘orientation’: 设置文本的方向。可以是’right’(从右到左)或’left’(从左到右)。默认为’right’。
  • ‘underline’: 设置文本是否带有下划线。可以是’true’(带有下划线)或’false’(不带下划线)。默认为’false’。
  • ‘strikeout’: 设置文本是否带有删除线。可以是’true’(带有删除线)或’false’(不带删除线)。默认为’false’。
  • ‘color’: 设置文本的颜色。可以是预定义的颜色名称(如’red’、‘green’、'blue’等)或RGB颜色值。例如,‘color’ => ‘red’或’color’ => [255, 0, 0]。
  • ‘halignment’: 设置文本的水平对齐方式。可以是’left’(左对齐)、‘center’(居中对齐)或’right’(右对齐)。默认为’left’。
  • ‘valignment’: 设置文本的垂直对齐方式。可以是’top’(顶部对齐)、‘center’(居中对齐)或’bottom’(底部对齐)。默认为’top’。
  • ‘spacing’: 设置文本行之间的间距。可以是固定的像素值或相对于字体大小的百分比。例如,‘spacing’ => ‘2’或’spacing’ => ‘20%’。
  • ‘outline’: 设置文本是否有轮廓。可以是’true’(有轮廓)或’false’(没有轮廓)。默认为’false’。
  • ‘outline_color’: 设置文本轮廓的颜色。可以是预定义的颜色名称或RGB颜色值。例如,‘outline_color’ => ‘blue’或’outline_color’ => [0, 0, 255]。

Halcon——C#中在HWindow上显示字符串遇见的问题及解决方案,# Halcon日日新,c#,开发语言

2. WriteString函数

c#代码形式:

	public static void WriteString(HTuple windowHandle, HTuple stringVal);
	//参数意义
	//windowHandle:显示窗体的句柄,可为Hwindow对象
	//stringVal:想显示的文本

	//代码案例
	HOperatorSet.WriteString(this.HalconWindow, item.Message);

Halcon——C#中在HWindow上显示字符串遇见的问题及解决方案,# Halcon日日新,c#,开发语言

二、DispText函数与WriteString函数的区别

  • ‘DispText’函数可以在图像窗口中显示文本,并根据给定的参数设置字体、颜色、对齐方式等属性。它可以根据输入的文本长度自动换行,并可以在指定的位置绘制文本。
  • ‘WriteString’函数可以将文本绘制到指定的图像或图像区域中,并根据给定的参数设置字体、颜色等属性。它通常用于在创建新的图像时添加标注或注释。

三、遇见的问题及解决方案

“HALCON error #5123: Wrong window type in operator disp_text”

当程序文件夹下,只存放了halcon.dll和halcondotnet.dll时,调用DispText函数时会出现如下报错。
Halcon——C#中在HWindow上显示字符串遇见的问题及解决方案,# Halcon日日新,c#,开发语言
此时,将Halcon软件目录下的hcanvas.dll放到自己软件目录下,则可以正常运行。

“HALCON error #5137: Wrong font name in operator set_font”

按上述操作后,通过SetFont改变公用的字体时,会出现新的问题:
Halcon——C#中在HWindow上显示字符串遇见的问题及解决方案,# Halcon日日新,c#,开发语言
通过排查发现:

1.当导入hcanvas.dll后,SetFont的字体设置形式应该为:“Arial-Normal-20”。

注意字符串两侧没有字符‘-’

2.当没导入hcanvas.dll时,SetFont的字体设置形式应该为:“-System---0-0-0-1-GB2312_CHARSET-”。

注意字符串两侧有字符‘-’文章来源地址https://www.toymoban.com/news/detail-553033.html

到了这里,关于Halcon——C#中在HWindow上显示字符串遇见的问题及解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 字符串(String)

    C#基础学习入门系列- C# 字符串(String) C#字符串(String)是一种不可变的序列字符。任何对字符串的操作都会返回一个新的字符串。字符串在C#中是一个引用类型,使用System.String类表示。 字符串可以通过使用双引号或者@符号来创建。双引号用于创建普通字符串 ,例如: @符

    2024年01月21日
    浏览(55)
  • 【C#】字符串拼接相关

    目录 1.字符串拼接方式1 用+号进行字符串拼接 复合运算符 += 2.字符串拼接方式2 3.控制台打印拼 4.例子  之前的算数运算符 只是用来数值类型变量进行数学运算的 而 string 不存在算数运算符 不能计算 但是可以通过+号来进行字符串拼接 用+号进行字符串拼接 复合运算符 += 按数

    2024年02月04日
    浏览(41)
  • C#字符串占位符替换

    string.Format()第一个双引号中,{n}是占位符,替换为后面对应的第n个数据,第一个双引号中的其他内容直接输出;运行如下; 比使用加号拼接字符串方便一些;在 Console.WriteLine 中也可以使用; 

    2024年02月13日
    浏览(52)
  • C# 将字符串进行分割

    将字符串str1 = \\\"select * from table \\\"; 进行分割,有两种方法: 用字符分割字符串: 字符串.split(); 用字符串分割字符串: Regex.Split(); 两者适用情况不同,详细解释如下: 1.1 单个字符 作为分割,使用.split(\\\'\\\') 1.2 多个字符 作为分割 ,使用.split(new char[]{\\\'\\\'}) 注: string[] arr = str.Spli

    2023年04月11日
    浏览(38)
  • c#如何把字符串中的指定字符删除

    可以使用以下四种方法: 一、使用:Replace public string Replace(char oldChar,char newChar); 在对象中寻找oldChar,如果寻找到,就用newChar将oldChar替换掉。 1、实例代码:   2、执行结果: 二、Remove(C#删除字符串) 1.public string Remove(int startIndex); 从startIndex位置开始,删除此位置后

    2024年02月02日
    浏览(52)
  • 3. 51——LCD1602显示 字符、字符串、数字

    显示开关控制指令(功能:控制显示器开/关 光标显示/关闭 是否闪烁) 进入模式设置指令(功能:每写入一位数据后光标的移动 左/右 显示屏不移动/整体右移 ) 功能设定指令(功能:设定数据总线的位数 显示的行数 字型 ) 清屏指令(功能:清屏显示空白 光标归位 地址

    2023年04月08日
    浏览(33)
  • c# 判断一个字符串列表是否包含另一个字符串列表中某一个元素

    当需要判断一个字符串列表是否包含另一个字符串列表中的某个元素时,可以使用 LINQ 查询来完成。下面是一个示例方法: 在上面的示例中,我们有两个字符串列表 list1 和 list2。我们想要判断 list1 是否包含了 list2 中的某个元素。 我们定义了 ListContainsElement 方法,该方法接

    2024年02月12日
    浏览(77)
  • C#删除字符串最后一个字符的几种方法

    字符串:string s = \\\"1,2,3,4,5,\\\" 目标:删除最后一个 \\\",\\\" 方法一: s = s.Remove(s.LastIndexOf(\\\",\\\"), 1); ; //移除掉最后一个\\\",\\\" 方法二:用的最多的是Substring,这个也是我一直用的 s = s.Substring(0,s.Length - 1) 方法三:用TrimEnd,这个东西传递的是一个字符数组 s=s.TrimEnd(\\\',\\\') //如果要删除\\\"5,\\\",则需

    2023年04月21日
    浏览(46)
  • 从键盘输入一个字符串,将此字符串按字符的ASCII码值从小到大排序,并显示排序后的字符串。

    题面: 字符串排序:要求编写程序,将给定字符串中的字符,按照ASCII码顺序从小到大排序后输出。 输入格式: 输入是一个以回车结束的非空字符串。 输出格式: 输出排序后的结果字符串。 输入样例: bfh3q487ybefg734 输出样例: 3344778bbeffghqy 思路: Dwl同学一开始给我的代码

    2024年02月05日
    浏览(70)
  • C# 生成指定长度的随机字符串

     /// summary         /// 生成指定长度的随机字符串         /// /summary         /// param name=\\\"intLength\\\"随机字符串长度/param         /// param name=\\\"booNumber\\\"生成的字符串中是否包含数字/param         /// param name=\\\"booSign\\\"生成的字符串中是否包含符号/param         /// param name=\\\"booSmall

    2024年01月19日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包