温故而知新(一)Halcon 画线,虚线,圆,矩形

您所在的位置:网站首页 halcon设置窗口背景颜色 温故而知新(一)Halcon 画线,虚线,圆,矩形

温故而知新(一)Halcon 画线,虚线,圆,矩形

2024-07-11 00:57| 来源: 网络整理| 查看: 265

温故而知新

先建一个窗体吧。我想不管做什么都需要这个开头吧

*关闭窗体 dev_close_window () *打开窗体(窗体左上角x坐标,窗体左上角y坐标,窗体长,窗体宽,背景颜色,窗体名称) dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

在这里插入图片描述

一、画线

在这里插入图片描述

*算子draw_line(窗体名称,起始点x坐标,起始点y坐标,终止点x坐标,终止点y坐标) draw_line (WindowHandle, Row1, Column1, Row2, Column2) disp_line (WindowHandle, Row1, Column1, Row2, Column2)

执行到draw_line的时候会让你在窗体上画一条线,画完线后鼠标右键确认,就退出了画线状态(我是这么认为的,具体是怎么叫,其实无所谓了。能记得住的就可以),至于说还可以按esc键,没尝试过,还真不清楚。 退出后,如果没有后面那就disp_line(…),那就什么都没有,只有起始点和终止点坐标被记录了下来,也就是上面的

起始点x坐标,起始点y坐标 Row1, Column1 终止点x坐标,终止点y坐标 Row2, Column2

在这里插入图片描述 现在需要这条线显示的话,那么在加上这句话disp_line disp可以看作display 显示的意思 line 则表示行(所以我现在也不是很理解我现在画的这个是线还是行) 最终效果: 在这里插入图片描述 最终效果就是一条线显示。

二、虚线

从“一”可以知道画线和显示就两句画,draw跟disp。但是画虚线的话,很多人还是不知道。至少我在网络上找如何画虚线的时候。很少有列子提供参考。唯数不多的资料,就我这水平能力,能找到最相近的,也就下面这个了。 链接: Halcon——绘制虚线 而且我看了一下,这几句话还是就在halcon帮助里就有的 在这里插入图片描述 在这里插入图片描述

而想要画虚线的方法就是:

set_line_style (WindowHandle, [10])

也是用这句话。只不过需要将这句话写到draw跟disp的中间,才能让直线变成虚线。

*算子draw_line(窗体名称,起始点x坐标,起始点y坐标,终止点x坐标,终止点y坐标) draw_line (WindowHandle, Row1, Column1, Row2, Column2) set_line_style (WindowHandle, [10]) disp_line (WindowHandle, Row1, Column1, Row2, Column2) set_line_style (WindowHandle, [])

最终效果是: 在这里插入图片描述 就能画条(或者说,生成一条)虚线 最后面的

set_line_style (WindowHandle, [])

为什么又要写一遍,并置空呢? 原因是set_line_style就像是dev_set_color(‘red’)设置属性一样。如果更改后,没有再给它改回去,那么它后面就会以set_line_style (WindowHandle, [10])的属性继续执行。

三、画圆 *算子draw_circle (窗体,圆中心x坐标,圆中心y坐标,圆半径) draw_circle (WindowHandle, Row, Column, Radius)

同样是以鼠标右键确认。 在这里插入图片描述 这里画完后数据同意也有保存,但是想让圆显示的话,就需要用到

空心圆 gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1)

在这里插入图片描述 如果在上一步,画虚线的时候,没有

set_line_style (WindowHandle, [])

那么就会出现一个虚线的空心圆 在这里插入图片描述 所以在用完set_line_style后,如果非必要,最好还是加上一句set_line_style (WindowHandle, []),把属性改回来。

实心圆 gen_circle (Circle, Row, Column, Radius)

在这里插入图片描述 还是挺有意思的嘛。

矩形

在这里插入图片描述

draw_rectangle1 (WindowHandle, Row11, Column11, Row21, Column21)

显示的算子跟画圆的一致 在这里插入图片描述

gen_rectangle1 (Rectangle, Row11, Column11, Row21, Column21)

不过怎么画空心矩形就是个问题了,有能力的朋友麻烦指点一下。因为我怎么找也没看见gen_rectangle1_contour_xld了,只能看见gen_rectangle2_contour_xld。

在此感谢大佬的支援: 在这里插入图片描述 在这里插入图片描述 最终可以实现空心矩形的画法。

最后附上所有的代码

*关闭窗体 dev_close_window () *打开窗体(窗体左上角x坐标,窗体左上角y坐标,窗体长,窗体宽,背景颜色,窗体名称) dev_open_window (0, 0, 512, 512, 'black', WindowHandle) *算子draw_line(窗体名称,起始点x坐标,起始点y坐标,终止点x坐标,终止点y坐标) draw_line (WindowHandle, Row1, Column1, Row2, Column2) set_line_style (WindowHandle, [10]) disp_line (WindowHandle, Row1, Column1, Row2, Column2) set_line_style (WindowHandle, []) stop() *清屏幕 dev_clear_window () draw_circle (WindowHandle, Row, Column, Radius) *实心圆 gen_circle (Circle, Row, Column, Radius) *空心圆 *gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1) stop() dev_clear_window () *实现空心矩形的方式 dev_set_draw('margin') *矩形 draw_rectangle1 (WindowHandle, Row11, Column11, Row21, Column21) gen_rectangle1 (Rectangle, Row11, Column11, Row21, Column21) 留言

敲了这么久,结果才是一点点的东西,这可能只是我迈出的一小步,想要达到一定的高度还遥遥无期。有点感慨那些成千上万字的大佬们,把总结写的那么好,真的是辛苦了,值得我学习。这路子果然还长着的。 辗转反侧,最终还是来自己的文章上看以前的写的东西啊。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3