机器视觉入门之路(二五,橡皮筋技术(可拖拽工具),c#)

要截取一幅特征图像,进行学习匹配,经常会用到,那么我们经常会用到矩形框的鼠标拖拽行为,人们称其为橡皮筋技术,首先,我们先拖动一根线,其次再搞定其他。我们仍然遵循最轻量级代码化,以后不足,再扩充。

好,走起!

第一,声明一条线,并画出来,这一次,线中心多了一个小框,如下:

看代码:   mg_line testline4 = new mg_line(new PointF(400, 400), new PointF(600, 400));//

  PointF m_LineCenter = new PointF();

第二,初始化m_LineCenter在form()中,

 m_LineCenter = new PointF(testline4.pt_start.X / 2 + testline4.pt_end.X / 2, testline4.pt_start.Y / 2 + testline4.pt_end.Y/ 2);

第三,在 pictureBox1_Paint()函数中画出先和小框,

             g.DrawLine(new Pen(Brushes.Black), testline4.pt_start, testline4.pt_end);//
            //lineCentre
            g.DrawRectangle(new Pen(Brushes.Black), (int)m_LineCenter.X - 5, (int)m_LineCenter.Y - 5, 10, 10);

第四,关键步骤,当鼠标移动进入线中心小框,直线就跟随鼠标走路了,哈哈!这不拖动了?

  private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {    float a=m_LineCenter.X ;float b=m_LineCenter.Y;
            if (e.X <= m_LineCenter.X + 5 && e.X >= m_LineCenter.X - 5
                 && e.Y >= m_LineCenter.Y - 5 && e.Y <= m_LineCenter.Y + 5)//鼠标进入小矩形框,随鼠标改变线和小框
            {

                PointF temp = new PointF(a - e.X, b - e.Y);
                testline4.直线平移(temp);//直线平移后改变,线中心也要改变
                m_LineCenter = new PointF(testline4.pt_start.X / 2 + testline4.pt_end.X / 2, testline4.pt_start.Y / 2 + testline4.pt_end.Y / 2);
            }
            pictureBox1.Invalidate();
        }

我这不是主流的橡皮筋技术,但解决问题就好。请你尝试解决以下问题:

1,鼠标移动太快,线移动跟不上,掉队了!未走到想要位置

2,进入小框,能否按下鼠标左键时移动,弹起鼠标左键时,释放线拖动?

3,能否在鼠标拖动释放期间,鼠标改变形状?

4,能否让直线拖动旋转呢?

5,你能否设计拖动一个矩形呢?

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值