自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4502)
  • 收藏
  • 关注

原创 非标自动化教学系列课程

非标自动化教学系列课程。

2026-01-02 09:35:36 3835 1

原创 常见工程、应用、学习错误及安装问题

常见工程、应用、学习错误

2019-10-31 12:18:28 3640 1

原创 WPF之视觉状态 (VisualStateManager)

VisualStateManager 是 WPF 的"表情管理大师"——它负责在控件不同状态(正常、悬停、按下、禁用)之间平滑切换外观,让 UI 动起来有灵魂。关键理解:VisualStateManager方式(平滑过渡)鼠标悬停触发动画背景渐变0.2秒流畅自然Trigger方式(瞬间切换)鼠标悬停背景变灰色瞬间变化生硬🎬 核心概念详解1. VisualStateGroup(状态组)状态组是一组互斥的状态——同一时间只能有一个状态处于激活状态。CommonStates 状态组鼠标移入鼠标移出按下释

2026-04-20 11:43:51 3

原创 WPF之控件模板 (ControlTemplate)

TemplateBinding 是模板和控件属性之间的桥梁——它让模板内部的元素能读取控件本身的属性值。

2026-04-20 11:40:57 2

原创 引导定位原理原理演示

2026-04-18 22:29:48 923

原创 1.单相机带角度定位引导

九点标定的作用:图像坐标系转换为机械手坐标系。

2026-04-18 21:03:56 232

原创 VisionMaster企业实操训练系列课程

主要出于,快速会设计视觉引导定位项目。

2026-04-18 20:56:54 34

原创 Winform部署图像分割模型

【代码】Winform部署图像分割模型。

2026-04-16 17:39:09 33

原创 Winform部署HalconAI深度学习模型

2026-04-14 17:13:06 40

原创 Halcon深度学习之异常检测

2026-04-14 12:55:42 149

原创 Halcon深度学习之图像检测-带角度

2026-04-13 22:03:23 200

原创 Halcon深度学习之图像分割

2026-04-12 21:15:20 41

原创 Halcon深度学习之图像分类

2026-04-09 14:47:20 138

原创 液态镜头 + Halcon 景深融合

硬件层:关键是控制电压变化与图像采集的同步。数据层:必须对采集的序列图像进行配准,消除因变焦带来的微小放大率变化。算法层:Halcon 的核心算子集中在var_image(清晰度评估)和金字塔算子(等)上。优化:若追求速度,可使用局部块状融合;若追求画质,必须使用金字塔融合。

2026-04-09 13:38:05 574

原创 DependencyProperty 完全解析:从零到精通

DependencyProperty 不是一个"值",而是一个"注册信息"——它告诉 WPF:“有一个叫 XXX 的属性存在,它的默认值是什么,变化时该通知谁,值从哪里来”。问题:把属性的"定义"和"值"分开存储:🔍 DependencyProperty 到底是什么?它是一个"注册证"比喻理解想象你在办房产证:📝 Register 注册详解Register 方法做了什么?完整注册示例🗺️ 全局注册表所有 DependencyProperty 都存在一个全局字典里为什

2026-04-05 11:07:54 352

原创 DependencyObject 与 WPF 依赖属性系统深度解析

功能实现机制开发者受益内存优化全局存储+默认值共享大量控件时内存占用小属性继承向上遍历视觉树查找FontSize等一次设置全局生效数据绑定BindingExpression实时同步UI与数据自动同步动画AnimationClock动态计算值流畅的UI动画样式系统Style中的Setter统一管理控件外观优先级系统多来源按优先级合并不同来源不冲突强制值CoerceValue回调属性间互相限制变化通知属性变化响应。

2026-04-05 10:56:34 367

原创 什么是UI线程

/ UI线程就是一个普通的.NET线程,但有一些特殊之处// 这是一个普通线程// 但在这个线程上创建了WPF应用// 从此,这个线程变成了"UI线程"});// UI线程必须是STAUI线程是一个运行着消息循环的STA线程,专门负责创建和管理用户界面。

2026-04-05 10:17:04 374

原创 DispatcherObject 的线程强制机制详解

/ 依赖属性包装器get// 每次访问都检查线程set// 确保在UI线程设置// 受保护的方法也可以检查// 确保UI线程调用// 重写属性,确保线程安全getset// 提供线程安全的更新方法else线程安全UI元素不是线程安全的强制单线程访问避免竞争条件性能优化避免为每个UI元素加锁检查访问权限成本很低可预测性UI状态变化是顺序的避免多线程导致的诡异Bug。

2026-04-05 09:52:09 377

原创 Window和ContentControl

/ ========== 核心属性 ==========// 内容对象:可以是字符串、数字、控件、任意UIElementset;// 内容模板:定义内容如何被呈现set;// 模板选择器:根据内容动态选择模板set;// 是否有内容// ========== 生命周期 ==========// ========== 辅助属性 ==========set;set;// ========== 窗口标识 ==========set;} // 窗口标题set;} // 窗口图标。

2026-04-05 09:47:52 536

原创 WPF视觉树继承体系全解析

WPF的分层设计体现了单一职责原则和开闭原则每一层只做一件事- DispatcherObject管线程,DependencyObject管属性,Visual管渲染…上层继承下层- 复用下层能力,增加新特性按需选择层级- 不需要的功能就不继承,保持轻量这个设计让WPF既能满足复杂业务应用的需求(使用Control),又能高效渲染大量数据(使用Visual),是经过深思熟虑的架构决策。记忆口诀线程安全最底层(DispatcherObject),依赖属性随后跟(DependencyObject),

2026-04-05 09:47:00 580

原创 用户控件 (UserControl) 和自定义控件 (CustomControl) 的区别

很多WPF初学者在学习控件开发时,都会被和这两个概念搞晕。它们到底有什么区别?什么时候该用哪个?为什么有些控件库(比如 HeBianGu.WPF-Control)大量使用 CustomControl?别急,读完这篇教程,你不仅会得到答案,还能掌握一套“何时用、怎么用”的决策方法。你发现市面上的乐高没有你想要的“哥特式尖顶”,于是你自己设计图纸、开模具、生产出一种全新的零件。这个零件可以像普通乐高一样,和其他任何零件自由组合。特点:从零制造,完全可控,可任意组合。适用:需要高度复用、支持主题定制。

2026-04-05 09:32:04 849

原创 WPF-Control开源项目系列教程

2026-04-05 09:29:20 2

原创 WPF-Control开源项目

该项目代码结构清晰,不仅可以直接使用,也是一个学习 WPF 自定义控件开发、样式设计以及 MVVM 模式的优秀范例。如果你对 WPF 开发感兴趣,或者正在寻找一套能提升开发效率的 UI 方案,这个项目值得关注。HeBianGu 的 WPF-Control 是一个开源、免费且功能丰富的 WPF 自定义控件库,旨在帮助 .NET 开发者快速构建现代化、高性能的 Windows 桌面应用程序。内置多套精美的皮肤主题(如浅色、深色、自定义主色等),支持一键切换,并允许用户自定义主题色和字体大小。

2026-04-04 22:50:09 307

原创 三 光学工程师工作规范记录

【代码】三 光学工程师工作规范记录。

2026-04-04 21:02:05 598

原创 Halcon深度学习之图像(对象)检测任务

(比如“猫”),模型找出所有猫并正确标注的能力。它综合了“精确率”(找得准不准)和“召回率”(找得全不全),通常通过计算PR曲线下的面积得到。, Mean Average Precision)是衡量检测模型综合性能的最核心指标。所以,mAP = 0.70 意味着模型在所有三个类别上的平均表现是70%。:把所有类别的AP值加起来,再除以类别总数。这就是“平均AP”。,是你判断模型好坏最关键的指标。,否则数值没有可比性。

2026-04-04 15:36:36 84

原创 英语学习方法

同声传译耳机,是语言能力的“拐杖”,而不是“替身”。拐杖可以帮助一个腿受伤的人走路,但没有人愿意一辈子拄着拐杖跑步、跳舞、拥抱或攀登。在AI时代,学习英语(尤其是口语)的必要性不降反升,只是从“应试/考证”转向了“保持作为人的交流主体性”。如果你只做游客,耳机够用。如果你想深度工作、建立信任、独立思考、感受文化温度——你必须亲自掌握这门语言。因为最终,是你在和另一个人说话,不是你的耳机。

2026-04-04 11:17:38 370

原创 背光源的使用教程

背光源是机器视觉里的“老实人”,它不需要复杂的角度,核心就一句话:把物体变成剪影。测尺寸:首选背光 + 远心镜头。测玻璃/透明体:用蓝色或红外背光。安装:物体在中间,光源在底下,相机在上面。如果你拿到一个亮晶晶的金属件不知道怎么打光,不妨试试把它放到背光上——虽然看不到表面划痕,但它的尺寸精度会立刻清晰地展现出来。

2026-04-03 21:51:29 453

原创 IShapes\IDeletableShapes\IAddableShapes

接口方法职责只负责添加只负责删除IShapesShapes+ 继承的方法完整管理(添加+删除+查询)核心价值接口隔离:每个接口职责单一灵活组合:可以根据需要实现部分接口只读保护:通过防止外部修改批量操作params参数支持一次操作多个形状扩展性好:可以轻松添加新接口(如使用场景✅ 形状集合管理✅ 撤销/重做系统✅ 筛选视图✅ 只读包装器✅ 权限控制(只读用户只能看不能改)这套接口设计是面向对象设计原则的优秀实践,体现了高内聚、低耦合的设计思想!

2026-04-03 15:49:54 219

原创 IViewState

成员类型用途View属性关联的视图对象Enter()方法进入状态时初始化Exit()方法退出状态时清理方法响应缩放变化核心价值视图访问:状态可以直接操作视图生命周期:规范的初始化和清理流程缩放响应:正确处理视图缩放扩展性:可以添加更多生命周期方法与 IState 的对比特性IStateIViewState鼠标事件✅✅修饰键✅✅视图关联❌✅进入/退出❌✅缩放响应❌✅这个接口让状态从纯事件处理器升级为有完整生命周期的视图管理器!

2026-04-03 15:35:10 311

原创 IState

成员类型用途属性激活状态需要的修饰键方法处理鼠标按下方法处理鼠标移动MouseUp()方法处理鼠标释放方法处理鼠标离开核心价值统一契约:所有状态遵循相同的接口修饰键支持:可以指定激活条件完整事件:覆盖所有鼠标交互可扩展:可以添加更多事件方法典型应用✅ 绘制状态(处理拖拽绘制)✅ 选择状态(处理点击选择)✅ 编辑状态(处理控制点拖拽)✅ 缩放状态(处理缩放操作)这个接口是整个状态机系统的根基,为所有交互状态提供了统一的规范!

2026-04-03 15:31:55 257

原创 AddRectShapeState

/ 自定义矩形添加状态(红色边框)// 自定义矩形添加状态(红色边框) public class AddRedRectState : AddRectShapeState < RectShape > {

2026-04-03 15:14:09 210

原创 TwoClickAddSahpeState

StateBase(状态基类)↓ShapeState<T>(泛型形状状态)↓AddShapeState<T>(添加形状状态)↓OneClickAddShapeState<T>(单击添加)↓TwoClickAddShapeState<T>(两次点击添加)← 当前类↓具体形状状态:├── AddRectState(添加矩形)├── AddEllipseState(添加椭圆)├── AddLineState(添加线条)├── AddSquareState(添加正方形)

2026-04-03 15:11:29 516

原创 OneClickAddShapeState

成员类型用途OnClick()重写处理单击(仅第一次点击)OneClick()虚方法单击处理(可重写)重写仅未点击时更新预览抽象方法子类实现预览逻辑核心价值极简使用:子类只需实现即可固定大小:适用于图标、固定尺寸形状等实时预览:鼠标移动时显示预览效果一键放置:单击即可添加形状典型应用✅ 添加固定大小矩形✅ 添加固定大小圆形✅ 添加图标/图钉✅ 添加文本标签✅ 添加预设形状这个基类是最简单、最易用的形状添加状态,非常适合工具面板中的预设形状按钮!

2026-04-03 15:07:58 328

原创 AddShapeState

成员类型用途队列存储鼠标点击点OnClick()抽象方法处理点击逻辑抽象方法处理移动预览Sumit()虚方法提交形状Cancel()虚方法取消绘制AddShape()虚方法添加形状到集合重写检测控制点(删除)核心价值完整绘制流程:支持点击、拖拽、预览、提交、取消多点支持:通过队列支持多边形等多点绘制控制点集成:可以在绘制状态中删除已有形状可扩展:子类只需实现 OnClick 和 OnPreviewMouseMove典型应用✅ 添加矩形(两点确定)✅ 添加圆形(圆心+半径)

2026-04-03 15:05:17 318

原创 ShapeState

成员类型用途Shape属性当前状态管理的形状虚方法工厂方法,创建形状实例重写返回形状作为预览虚方法更新状态形状显示ShowEdit()重写显示编辑界面重写控制点移动后处理方法清除状态形状核心价值泛型安全:类型安全的形状管理完整生命周期:创建、显示、编辑、销毁实时更新:移动控制点时实时更新预览和正式形状可扩展:子类只需实现简单的工厂方法典型应用✅ 矩形绘制/编辑状态✅ 圆形绘制/编辑状态✅ 线条绘制/编辑状态✅ 文本绘制/编辑状态这个基类是形状状态管理的终极抽象。

2026-04-03 15:01:49 293

原创 HandleShapeStateBase

成员类型用途保护属性当前命中的控制点重写检测控制点、设置光标、触发点击重写拖拽控制点移动MouseUp()重写释放控制点、恢复光标重写清除控制点抽象方法子类实现控制点命中检测虚方法删除控制点处理虚方法移动后处理保护方法清除控制点核心价值完整交互:支持控制点的命中检测、拖拽移动、点击事件光标管理:自动切换和恢复控制点光标删除支持:内置删除控制点的处理框架可扩展:子类只需实现HitHandle方法典型应用✅ 选择状态(拖拽控制点缩放/移动形状)✅ 编辑状态(显示删除按钮)

2026-04-03 14:56:48 231

原创 PreviewShapeStateBase

成员类型用途抽象方法子类提供要预览的形状虚方法获取预览视图重写鼠标离开时清除预览重写鼠标移动时更新预览保护方法绘制预览形状Exit()重写退出时清除预览重写缩放时重新绘制预览核心价值实时预览:鼠标移动时自动显示预览形状自动清理:鼠标离开或状态退出时自动清除预览缩放适配:缩放时自动重新绘制预览可扩展:子类只需实现 GetPreviewShape 即可典型应用✅ 绘制矩形工具(显示矩形预览)✅ 绘制圆形工具(显示圆形预览)✅ 绘制线条工具(显示线条预览)

2026-04-03 14:48:03 302

原创 ShowEditStateBase

成员类型用途编辑命令,可绑定到 UIShowEdit()异步虚方法显示编辑界面核心价值命令封装:将编辑操作封装为 WPF 命令,方便 UI 绑定异步支持:使用 async/await 不阻塞 UI 线程服务解耦:通过 IoC 容器获取表单服务可扩展:子类可以重写 ShowEdit 自定义编辑逻辑典型应用✅ 双击形状打开属性编辑对话框✅ 工具栏的"编辑属性"按钮✅ 右键菜单的"属性"命令✅ 快捷键(如 F2)编辑选中形状这个基类为形状编辑提供了便捷的命令和界面显示机制。

2026-04-03 14:45:11 314

原创 ShapeStyleSettingStateBase

组件类型职责抽象类样式设置状态的标记基类当前状态✅ 继承自StateBase✅ 标记为抽象类(不能直接实例化)❌ 没有任何成员(空的)设计意图类型分组:将所有样式设置状态归类扩展预留:为未来的通用功能预留位置语义清晰:通过类名表达用途潜在用途统一处理:所有样式设置状态共享某些行为这个类虽然目前是空的,但它为形状样式设置功能提供了清晰的类型层次结构,方便未来扩展!

2026-04-03 14:40:49 227

原创 StateBase

成员类型用途View属性关联的视图对象属性激活状态的修饰键要求虚方法鼠标事件处理Enter/Exit虚方法状态生命周期方法设置鼠标光标方法绘制临时预览方法刷新形状视图核心价值统一框架:所有状态使用相同的接口和生命周期修饰键支持:可以指定 Ctrl/Alt/Shift 激活状态视图解耦:通过 IView 接口访问控件功能临时绘制:支持状态预览(如绘制中的形状)光标管理:统一的光标设置方法这个基类是状态机系统的基石,为所有交互状态提供了强大而灵活的基础设施!

2026-04-03 12:30:20 261

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除