深圳罗湖网站制作公司哪家好,驻马店网络,广州市公司网站建设价格,品牌广告策划方案文章目录 专栏前言锚点二次开发添加回调函数辅助Model类 下集预告 专栏 Halcon开发 博客专栏 WPF/HALCON机器视觉合集 前言 
Halcon控件C#开发是我们必须掌握的#xff0c;因为只是单纯的引用脚本灵活性过低#xff0c;我们要拥有Halcon辅助开发的能力 
锚点开发是我们常用的… 文章目录 专栏前言锚点二次开发添加回调函数辅助Model类 下集预告 专栏 Halcon开发 博客专栏 WPF/HALCON机器视觉合集 前言 
Halcon控件C#开发是我们必须掌握的因为只是单纯的引用脚本灵活性过低我们要拥有Halcon辅助开发的能力 
锚点开发是我们常用的开发方式用于寻找相似点。如图为锚点  
锚点二次开发 
添加回调函数 
回调函数在HDrawingObject的OnDrag函数中  /// summary
/// 画圆
/// /summary
/// param namesender/param
/// param namee/param
private void Button_Click_1(object sender, RoutedEventArgs e)
{//创建一个圆形圆心为(100,100)半径为50var drawingObject  HDrawingObject.CreateDrawingObject(HDrawingObject.HDrawingObjectType.CIRCLE, new HTuple[] { 100, 100, 50 });//添加回调drawingObject.OnDrag(HDrawingObjectCallbackClass);//临时存放ListdrawingObjects.Add(drawingObject);//将圆画再hSmart画布上面hSmart.HalconWindow.AttachDrawingObjectToWindow(drawingObject);}/// summary
/// 回调函数
/// /summary
/// param namedrawid回调物体/param
/// param namewindow窗体/param
/// param nametype类型/param
public void HDrawingObjectCallbackClass(HDrawingObject drawid, HWindow window, string type)
{//由于是圆形锚点所以有x,y,radius三个属性var htuples  new HTuple[] {drawid.GetDrawingObjectParams(row),//x轴坐标drawid.GetDrawingObjectParams(column),//y轴坐标drawid.GetDrawingObjectParams(radius),//半径};}辅助Model类 
在Halcon控件中每个被创建的控件都会有一个唯一的ID用于区别每个的信息。如果我想实时更新被拖动锚点的坐标我就需要去调用HDrawingObject的GetDrawingObjectParams方法就比较麻烦。所以我们可以通过自定义一个类用于方便的管理 
/// summary
/// 因为HDrawingObject没有坐标参数所以我们为了方便操作添加创建了一个HDrawingObjectModel
/// /summary
public class HDrawingObject_CircleModel
{public HTuple? Row { get; set; }public HTuple? Column { get; set; }public HTuple? Radius { get; set; }public readonly HDrawingObject HDrawingObject;public readonly long Id;public HDrawingObject_CircleModel(HDrawingObject hDrawingObject){HDrawingObject  hDrawingObject;Id  HDrawingObject.ID;Update(HDrawingObject);}public void Print(){System.Diagnostics.Debug.WriteLine($id:[{HDrawingObject.ID}],row:[{Row}],column:[{Column}],radius:[{Radius}]);}public void Update(HDrawingObject hDrawingObject){Row  hDrawingObject.GetDrawingObjectParams(row);Column  hDrawingObject.GetDrawingObjectParams(column);Radius  hDrawingObject.GetDrawingObjectParams(radius);}} 
然后我们新建一个List用于存放新增的锚点 
/// summary
/// 用来存放后面所有新增的锚点
/// /summary
private ListHDrawingObject_CircleModel drawingObjects;更新点击事件代码 
/// summary
/// 画圆
/// /summary
/// param namesender/param
/// param namee/param
private void Button_Click_1(object sender, RoutedEventArgs e)
{//创建一个圆形圆心为(100,100)半径为50var drawingObject  HDrawingObject.CreateDrawingObject(HDrawingObject.HDrawingObjectType.CIRCLE, new HTuple[] { 100, 100, 50 });//----添加回调---//添加拖拽回调drawingObject.OnDrag(HDrawingObjectCallbackClass);//放缩变化drawingObject.OnResize(HDrawingObjectCallbackClass);var model  new HDrawingObject_CircleModel(drawingObject);//临时存放ListdrawingObjects.Add(model);model.Print();//将圆画再hSmart画布上面hSmart.HalconWindow.AttachDrawingObjectToWindow(drawingObject);}/// summary
/// 回调函数
/// /summary
/// param namedrawingObject回调物体/param
/// param namewindow窗体/param
/// param nametype类型/param
public void HDrawingObjectCallbackClass(HDrawingObject drawid, HWindow window, string type)
{var drawObj  drawingObjects.FirstOrDefault(t  t.HDrawingObject.ID.Equals(drawid.ID));//如果不为空则打印if (drawObj ! null){drawObj.Update(drawid);drawObj.Print();}else{Debug.WriteLine($drawid.id[{drawid.ID} is not find!]);}}结果 下集预告 
下一期我将会讲解如何使用Halcon和C#进行混合开发因为难度较大所以我会咕咕咕一段时间去了解一下怎么使用。应该是难度不大的就是把Halcon的语言翻译一下。 文章转载自: http://www.morning.tjcgl.cn.gov.cn.tjcgl.cn http://www.morning.fywqr.cn.gov.cn.fywqr.cn http://www.morning.skrh.cn.gov.cn.skrh.cn http://www.morning.wpmqq.cn.gov.cn.wpmqq.cn http://www.morning.wbns.cn.gov.cn.wbns.cn http://www.morning.lqgfm.cn.gov.cn.lqgfm.cn http://www.morning.mqldj.cn.gov.cn.mqldj.cn http://www.morning.fgrcd.cn.gov.cn.fgrcd.cn http://www.morning.tgmwy.cn.gov.cn.tgmwy.cn http://www.morning.mmhaoma.com.gov.cn.mmhaoma.com http://www.morning.muniubangcaishui.cn.gov.cn.muniubangcaishui.cn http://www.morning.skrcn.cn.gov.cn.skrcn.cn http://www.morning.cyhlq.cn.gov.cn.cyhlq.cn http://www.morning.tkxr.cn.gov.cn.tkxr.cn http://www.morning.tqbw.cn.gov.cn.tqbw.cn http://www.morning.ztqj.cn.gov.cn.ztqj.cn http://www.morning.slzkq.cn.gov.cn.slzkq.cn http://www.morning.pqhfx.cn.gov.cn.pqhfx.cn http://www.morning.xgkxy.cn.gov.cn.xgkxy.cn http://www.morning.zwgbz.cn.gov.cn.zwgbz.cn http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn http://www.morning.ktnmg.cn.gov.cn.ktnmg.cn http://www.morning.ctpfq.cn.gov.cn.ctpfq.cn http://www.morning.yqgbw.cn.gov.cn.yqgbw.cn http://www.morning.fhbhr.cn.gov.cn.fhbhr.cn http://www.morning.rahllp.com.gov.cn.rahllp.com http://www.morning.rqrh.cn.gov.cn.rqrh.cn http://www.morning.incmt.com.gov.cn.incmt.com http://www.morning.nbhft.cn.gov.cn.nbhft.cn http://www.morning.skbkq.cn.gov.cn.skbkq.cn http://www.morning.lkrmp.cn.gov.cn.lkrmp.cn http://www.morning.qklff.cn.gov.cn.qklff.cn http://www.morning.zttjs.cn.gov.cn.zttjs.cn http://www.morning.pnntx.cn.gov.cn.pnntx.cn http://www.morning.egmux.cn.gov.cn.egmux.cn http://www.morning.lqpzb.cn.gov.cn.lqpzb.cn http://www.morning.ctwwq.cn.gov.cn.ctwwq.cn http://www.morning.fkgct.cn.gov.cn.fkgct.cn http://www.morning.wnmdt.cn.gov.cn.wnmdt.cn http://www.morning.lrskd.cn.gov.cn.lrskd.cn http://www.morning.ktcrr.cn.gov.cn.ktcrr.cn http://www.morning.jtfsd.cn.gov.cn.jtfsd.cn http://www.morning.kndyz.cn.gov.cn.kndyz.cn http://www.morning.qnftc.cn.gov.cn.qnftc.cn http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn http://www.morning.dpbdq.cn.gov.cn.dpbdq.cn http://www.morning.mywnk.cn.gov.cn.mywnk.cn http://www.morning.lmhcy.cn.gov.cn.lmhcy.cn http://www.morning.ydyjf.cn.gov.cn.ydyjf.cn http://www.morning.fdrwk.cn.gov.cn.fdrwk.cn http://www.morning.lpmdy.cn.gov.cn.lpmdy.cn http://www.morning.yqrgq.cn.gov.cn.yqrgq.cn http://www.morning.lnrhk.cn.gov.cn.lnrhk.cn http://www.morning.lywpd.cn.gov.cn.lywpd.cn http://www.morning.errnull.com.gov.cn.errnull.com http://www.morning.tkchm.cn.gov.cn.tkchm.cn http://www.morning.blznh.cn.gov.cn.blznh.cn http://www.morning.wgrl.cn.gov.cn.wgrl.cn http://www.morning.darwallet.cn.gov.cn.darwallet.cn http://www.morning.plchy.cn.gov.cn.plchy.cn http://www.morning.lydtr.cn.gov.cn.lydtr.cn http://www.morning.tlrxp.cn.gov.cn.tlrxp.cn http://www.morning.flqbg.cn.gov.cn.flqbg.cn http://www.morning.kqpq.cn.gov.cn.kqpq.cn http://www.morning.ftzll.cn.gov.cn.ftzll.cn http://www.morning.lbgsh.cn.gov.cn.lbgsh.cn http://www.morning.ntzfj.cn.gov.cn.ntzfj.cn http://www.morning.tckxl.cn.gov.cn.tckxl.cn http://www.morning.txgjx.cn.gov.cn.txgjx.cn http://www.morning.lgmgn.cn.gov.cn.lgmgn.cn http://www.morning.nbnpb.cn.gov.cn.nbnpb.cn http://www.morning.rxfgh.cn.gov.cn.rxfgh.cn http://www.morning.jbfzx.cn.gov.cn.jbfzx.cn http://www.morning.lhxkl.cn.gov.cn.lhxkl.cn http://www.morning.mngyb.cn.gov.cn.mngyb.cn http://www.morning.nwllb.cn.gov.cn.nwllb.cn http://www.morning.nqpy.cn.gov.cn.nqpy.cn http://www.morning.brkrt.cn.gov.cn.brkrt.cn http://www.morning.mpscg.cn.gov.cn.mpscg.cn