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

1 篇文章 0 订阅

温故而知新

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

*关闭窗体
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)

留言

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

  • 9
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值