C#与halcon联合(3)文本写入可以改变字体大小类型及绘画直线图形十字叉箭头轮廓

1.操作demo

在这里插入图片描述
各种直线图形的绘画轮廓(XLD)显示
文字的写入与修改其规格,可修改显示字体的大小

2.绘画直线及显示

①在halcon中的操作代码如下

dev_set_color ('red')
dev_set_line_width (1)
draw_line (3600, Row1, Column1, Row2, Column2)
gen_region_line (RegionLines, Row1, Column1, Row2, Column2)

②转换成C#代码并将其封装成函数如下

public void DrawLineFun(HObject myImage, HWindowControl myWindowControl)
        {
            HObject ho_RegionLines;
            HTuple row1,col1,row2,col2;
            //清空之前的直线
            HOperatorSet.GenEmptyObj(out ho_RegionLines);
            ho_RegionLines.Dispose();

            //定死画笔颜色和线宽大小
            HOperatorSet.SetColor(myWindowControl.HalconWindow, "green");
            HOperatorSet.SetLineWidth(myWindowControl.HalconWindow, 1);

            //绘画直线
            HOperatorSet.DrawLine(myWindowControl.HalconWindow, out row1,out col1,out  row2,out  col2);

            HOperatorSet.GenRegionLine(out ho_RegionLines, row1, col1, row2, col2);
            HOperatorSet.DispObj(ho_RegionLines, myWindowControl.HalconWindow);
        }

3.绘画圆形及显示其轮廓(XLD)

①在halcon中的操作代码如下

dev_set_color ('red')
dev_set_line_width (1)
draw_circle (3600, Row, Column, Radius)
gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1)

②转换成C#代码并将其封装成函数如下

public void DrawCircleXLDFun(HObject myImage, HWindowControl myWindowControl)
        {
            HObject ho_ContCircle;
            HTuple hv_Row = null, hv_Column = null, hv_Radius = null;
            HOperatorSet.GenEmptyObj(out ho_ContCircle);
            ho_ContCircle.Dispose();

            //定死画笔颜色和线宽大小
            HOperatorSet.SetColor(myWindowControl.HalconWindow, "red");
            HOperatorSet.SetLineWidth(myWindowControl.HalconWindow, 1);

            //画圆与显示轮廓
            HOperatorSet.DrawCircle(myWindowControl.HalconWindow, out hv_Row, out hv_Column, out hv_Radius);
            HOperatorSet.GenCircleContourXld(out ho_ContCircle, hv_Row, hv_Column, hv_Radius,
                0, 6.28318, "positive", 1);
            HOperatorSet.DispObj(ho_ContCircle, myWindowControl.HalconWindow);

        }

4.绘画普通矩形及轮廓显示(XLD)

①在halcon中的操作代码如下

dev_set_color ('red')
dev_set_line_width (1)
draw_rectangle1 (3600, Row1, Column1, Row2, Column2)
//显示相关代码在下方代码链接中,可自行下载观看

②转换成C#代码并将其封装成函数如下

            HObject ho_rectangle;
            HTuple hv_Row1 = null, hv_Column1 = null, hv_Row2 = null;
            HTuple hv_Column2 = null;
            HOperatorSet.GenEmptyObj(out ho_rectangle);
            ho_rectangle.Dispose();

            //设置绘画线的颜色的宽度
            HOperatorSet.SetColor(myWindowControl.HalconWindow, "white");
            HOperatorSet.SetLineWidth(myWindowControl.HalconWindow, 1);

            //画矩形
            HOperatorSet.DrawRectangle1(myWindowControl.HalconWindow, out hv_Row1, out hv_Column1, out hv_Row2, out hv_Column2);
//显示相关代码在下方代码链接中,可自行下载观看

5.绘画角度可调矩形及其轮廓显示(XLD)

①在halcon中的操作代码如下

dev_set_color ('red')
dev_set_line_width (1)
draw_rectangle2 (3600, Row, Column, Phi, Length1, Length2)
gen_rectangle2_contour_xld (Rectangle, Row, Column, Phi, Length1, Length2)

②转换成C#代码并将其封装成函数如下

        //绘画可调角度的矩形轮廓
        public void DrawRectangle2XLDFun(HObject myImage, HWindowControl myWindowControl)
        {
            HObject ho_Rectangle;
            HTuple hv_Row = null, hv_Column = null, hv_Phi = null;
            HTuple hv_Length1 = null, hv_Length2 = null;
            HOperatorSet.GenEmptyObj(out ho_Rectangle);
            ho_Rectangle.Dispose();

            //设置绘画线的颜色的宽度
            HOperatorSet.SetColor(myWindowControl.HalconWindow, "pink");
            HOperatorSet.SetLineWidth(myWindowControl.HalconWindow, 1);

            //绘画可调整角度矩形及显示轮廓
            HOperatorSet.DrawRectangle2(myWindowControl.HalconWindow, out hv_Row, out hv_Column, out hv_Phi, out hv_Length1,
                out hv_Length2);
            
            HOperatorSet.GenRectangle2ContourXld(out ho_Rectangle, hv_Row, hv_Column, hv_Phi,
                hv_Length1, hv_Length2);
            HOperatorSet.DispObj(ho_Rectangle, myWindowControl.HalconWindow);
        }

6.显示十字叉轮廓(XLD)

①在halcon中的操作代码如下

dev_set_color ('red')
dev_set_line_width (1)
gen_cross_contour_xld (Cross,100 ,1000 , 6, 0.785398)

②转换成C#代码并将其封装成函数如下

        //显示十字叉轮廓
        public void DisCrossXLDFun(HObject myImage, HWindowControl myWindowControl)
        {
            HObject ho_Cross;
            HTuple row1, col1, row2, col2;
            HOperatorSet.GenEmptyObj(out ho_Cross);
            ho_Cross.Dispose();

            //设置绘画线的颜色的宽度
            HOperatorSet.SetColor(myWindowControl.HalconWindow, "red");
            HOperatorSet.SetLineWidth(myWindowControl.HalconWindow, 1);

            //获取显示窗体的规格
            HOperatorSet.GetPart(myWindowControl.HalconWindow, out row1,out  col1, out row2,out col2);

            //显示十字叉
            HOperatorSet.GenCrossContourXld(out ho_Cross, (row1+row2)/2, (col1+col2)/2, col2-col1, 0);

            HOperatorSet.DispObj(ho_Cross, myWindowControl.HalconWindow);
        }

7.显示箭头轮廓(XLD)

①在halcon中的操作代码如下

dev_set_color ('red')
dev_set_line_width (1)
gen_arrow_contour_xld (Arrow, 100, 100, 200, 200, 5, 5)

②转换成C#代码并将其封装成函数如下

//显示相关代码在下方代码链接中,可自行下载观看

8.文字写入可修改文字大小哦

①在halcon中的操作代码如下

dev_set_color ('red')
dev_set_line_width (1)
set_tposition (3600, 20, 20)  //设置文本光标的位置
write_string (3600, 'hello')

②转换成C#代码并将其封装成函数如下

//可修改文字的大小代码
//在下方代码链接中,可自行下载观看
//不可修改字大小的代码
        public void AddMessage(string str_Message, HTuple row, HTuple col,string color, HTuple Size)
        {
            HTuple hv_Font;
            HTuple row1, col1, row2, col2;
            //设置字体的颜色
            HOperatorSet.SetColor(Hwindow, color);
            //得到当前的窗口坐标       
            HOperatorSet.GetPart(hWindowControl1.HalconWindow, out row1, out col1, out row2, out col2);

            //字体放置的位置 
            HOperatorSet.SetTposition(Hwindow, row1+ row, col1+ col);


            HOperatorSet.WriteString(Hwindow, str_Message);

        }

9.效果展示视频链接及开源代码下载链接

视频链接:https://www.bilibili.com/video/BV1n64y1s7Lg/
代码链接:https://download.csdn.net/download/adsd1233123/20833118

下节课进阶内容:
线线交点,点到线的距离,线线角度,线的角度,角度换算等等运算公式

  • 6
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱搞事的程小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值