HSmartWindowControl ROI

* 创建二维码模型
create_data_code_2d_model ('QR Code', [], [], DataCodeHandle)
* 寻找二维码并解码
find_data_code_2d (Image, SymbolXLDs, DataCodeHandle, [], [], ResultHandles, DecodedDataStrings)

HWindowControlWPF是Halcon提供的WPF控件,用于显示Halcon图像,而HSmartWindowControlWPF是Halcon提供的高级WPF控件,除了能显示Halcon图像外,还可以进行交互式图像处理和测量等操作。HSmartWindowControlWPF还可以添加自定义的工具栏和菜单,使用户能够更方便地进行图像处理。因此,HSmartWindowControlWPF相比HWindowControlWPF具有更多的功能和灵活性。

<halcon:HWindowControlWPF x:Name="HW" />

<halcon:HSmartWindowControlWPF x:Name="HS" Grid.Column="1" />

List<HDrawingObject> hDrawingObjects = new List<HDrawingObject>();

HDrawingObject.CreateDrawingObject

HW.HalconWindow.AttachDrawingObjectToWindow(hdrawObj);

HS.HalconWindow.DispObj(image);

HS.SetFullImagePart(image);

HS.HalconWindow.AttachDrawingObjectToWindow(rect);

internal class SmartWindowControl : HSmartWindowControl
{
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        MouseWheel += SmartWindowControl_MouseWheel;
    }

    private void SmartWindowControl_MouseWheel(object sender, MouseEventArgs e)
    {
        MouseEventArgs newe = new MouseEventArgs(e.Button, e.Clicks, e.X - Location.X, e.Y - Location.Y, e.Delta);
        HSmartWindowControl_MouseWheel(sender, newe);
    }
}
HDrawingObject drawingObject = new HDrawingObject();
drawingObject = HDrawingObject.CreateDrawingObject(RECTANGLE1,height, width ,height,width);
hswControl.HalconWindow.AttachDrawingObjectToWindow(drawingObject);
roi = HDrawingObject.CreateDrawingObject(HDrawingObject.HDrawingObjectType.CIRCLE, r, c, Radius);
_hwind.AttachDrawingObjectToWindow(roi);


 private void Canvas_MouseMove(object sender, MouseEventArgs e)
		{
            if (e.LeftButton == MouseButtonState.Pressed && rect_roi.IsChecked == true)
            {
                _endPoint = e.GetPosition(Canvas);
 
                _canvasRect.Height = Math.Abs(_endPoint.Y - _startPoint.Y);
                _canvasRect.Width = Math.Abs(_endPoint.X - _startPoint.X);
				
				// 左上往右下拖动
                if (_endPoint.X > _startPoint.X && _endPoint.Y > _startPoint.Y)
                {
                    Canvas.SetLeft(_canvasRect, _startPoint.X);
                    Canvas.SetTop(_canvasRect, _startPoint.Y);
                    
					//坐标转换,Canvas => HWindow
                    ConvertPoint(_startPoint.X, _startPoint.Y, _k, _tx, _ty, out double sx, out double sy);
                    ConvertPoint(_endPoint.X, _endPoint.Y, _k, _tx, _ty, out double ex, out double ey);
                    
                    _r1 = sy;
                    _c1 = sx;
                    _r2 = ey;
                    _c2 = ex;
                }
 
				// 右下往左上拖动
                if (_endPoint.X < _startPoint.X && _endPoint.Y < _startPoint.Y)
                {
                    Canvas.SetLeft(_canvasRect, _endPoint.X);
                    Canvas.SetTop(_canvasRect, _endPoint.Y);
                }
		}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值