- 博客(85)
- 资源 (11)
- 收藏
- 关注
原创 附加属性默认值不会触发事件
摘要:问题出在附加属性TouchBackground设置了默认值Brushes.White,当XAML中也设置为White时,由于值未变化,不会触发OnTouchBackgroundChanged回调,导致事件绑定失败。解决方案是避免为附加属性设置默认值,确保XAML中的赋值总能触发属性变更回调。该问题揭示了依赖属性机制的一个潜在陷阱:当设置值与默认值相同时,系统会跳过变更通知,这在需要响应属性变化的场景中容易引发难以排查的问题。
2026-02-05 19:46:02
197
原创 VM和View之前的交互(Interaction)
摘要:本文介绍了一种高效的ViewModel与View交互方式——使用Interaction模式。通过定义泛型Interaction类实现消息订阅处理,支持任意消息类型和返回值。ViewModel声明Interaction实例并调用Handle方法触发交互,View通过RegisterHandler注册处理逻辑。示例展示了如何实现2秒延迟后返回字符串的简单交互,相比回调函数等方式更加统一规范。这种方式避免了直接引用View,实现了松耦合的交互机制。
2026-01-23 15:45:13
57
原创 Avalonia桌面应用发布到Ubuntu22.04
摘要:Avalonia开发的Linux桌面应用部署需要特殊配置。先发布对应架构的程序(x64或arm64),然后在~/.local/share/applications/创建应用目录,包含可执行文件、.desktop入口文件和图标。.desktop文件需配置名称、路径、图标等信息,并通过chmod +x、desktop-file-validate命令验证,最后用update-desktop-database更新系统菜单。完成后程序将出现在开始菜单中。(150字)
2025-10-03 13:43:50
732
原创 Avalonia:创建安卓、Web应用(部署到iis)
本文介绍了使用Avalonia框架开发跨平台应用的完整流程。主要内容包括:1)安装必要的开发工具和负载(Android、Web开发环境);2)配置Android虚拟设备和Web服务器(IIS);3)创建跨平台项目,添加Semi主题包和Ursa控件库;4)解决中文显示问题(嵌入字体);5)Web应用的发布和部署(VS发布和dotnet命令)。文章详细说明了从环境搭建到应用部署的全过程,适合开发者快速入门Avalonia跨平台开发。
2025-09-25 15:37:25
1560
原创 五、导入现有模型
Helixtoolkit的Assimp支持(HelixToolkit.SharpDX.Assimp)提供了便捷的3D模型导入功能,支持3DS、OBJ、FBX等主流格式。通过Importer类可从文件路径或流加载模型,并转换为HelixToolkitScene场景节点树。该树包含SceneNode和Animations,通过SceneNodeGroupModel3D可添加到模型容器并在WPF中显示。此外,还支持选中模型部件功能,通过遍历MeshNode获取几何图形和变换信息,实现交互式选择与高亮显示。这一功能
2025-09-01 21:14:56
667
2
原创 四、坐标系显示
摘要:HelixToolkit提供ScreenSpaceGroup3D容器来管理3D坐标系标识,支持两种定位模式:1)相对视窗位置固定,不随缩放移动改变;2)绝对3D位置固定,随视图变化但保持大小不变。通过LineBuilder和BillboardText3D可创建三色坐标轴和文字标签,使用RelativeScreenLocationX/Y属性控制相对窗口位置。示例展示了金字塔、十二面体等不同形状的坐标系标识实现,以及通过AbsolutePosition3D模式在指定3D位置固定坐标系的方法,同时支持旋转和
2025-08-26 18:56:23
487
原创 三、显示3D文字
本文介绍了使用HelixToolkit实现3D文字显示的技术方案。主要包括:1)通过BillboardTextModel3D控件绑定BillboardText3D和BillboardImage3D对象来显示3D文字,可设置FixedSize属性控制缩放效果;2)BillboardText3D默认支持英文字体,BillboardImage3D增强版支持自定义字体;3)中文显示需要准备fnt和dds字体资源文件;4)使用TopMostGroup3D控件可实现文字始终置顶显示。文中还提供了XAML和C#示例代码,
2025-08-26 16:54:17
645
原创 二、添加3D形状
摘要:MeshBuilder类提供了多种几何体生成方法,包括立方体、球体、圆环、锥体、圆柱体、管道等基本形状,以及通过挤压、放样等操作生成的复杂曲面。支持参数化控制几何尺寸、分割精度、闭合面等属性,并提供法线/切线计算、多边形三角剖分等辅助功能。典型用法包括:定义路径生成管道,组合基础形状构建复杂模型,以及通过细分规则多面体创建光滑曲面。所有生成的几何体最终可转换为MeshGeometry3D对象用于渲染。
2025-08-25 19:08:13
473
原创 一、添加Viewport3DX,并设置相机、灯光
摘要:本文介绍了高性能WPF.SharpDX的核心组件与使用方法。主要包含Viewport3DX控件(管理3D场景渲染和交互)、CameraController(相机操作)、RenderHost(GPU渲染)等核心组件。详细说明了如何配置XAML视图窗口、相机设置(透视/正交)、光源类型(方向光/聚光灯等)以及交互控制(旋转/缩放/平移)。同时提供了聚光移动动画的实现代码示例,展示了3D场景构建的基本流程与关键参数设置。
2025-08-25 17:45:53
1221
原创 HelixToolkit 简介
HelixToolkit是一个基于.NET的高性能3D开发库,支持WPF和WinUI平台,集成SharpDX和Assimp实现高效3D渲染与模型处理。该库提供HelixViewport3D视图容器、MeshBuilder几何构建工具、MaterialHelper材质管理等核心组件,支持模型变换和交互操作。开发环境要求Windows 10+、.NET 6.0/8.0、Visual Studio 2022及DirectX11运行时,通过NuGet包(如HelixToolkit.Wpf.SharpDX)提供不同功
2025-08-25 14:51:03
1177
原创 C++利用CerateProcess创建WPF进程并通过命名管道通讯
本文介绍了在C++程序中调用WPF窗体的进程间通信实现方案。通过CreateProcess函数启动WPF程序,并使用命名管道进行通信。详细解析了CreateProcess各参数含义,包括应用程序路径、命令行参数、进程属性标志等。提供了完整的代码示例,展示如何创建管道连接、发送命令(Show/Hide/Exit)控制WPF窗体显示状态。其中重点说明了进程创建标志位的作用,如CREATE_NEW_CONSOLE、CREATE_SUSPENDED等,以及STARTUPINFO结构体对子进程窗体特性的配置。该方案实
2025-08-19 13:54:19
1172
原创 ObservableCollections 带过滤的集合、字典、队列以及环形缓冲区
ObservableCollections是一个功能强大的NuGet包,为WPF等框架扩展了多种支持通知功能的集合类型。它解决了原生ObservableCollection的不足,提供批量操作、过滤和映射功能。主要特性包括:ObservableList支持AddRange和过滤视图;ObservableDictionary提升增删改查效率;ObservableQueue和ObservableRingBuffer适用于消息队列场景,自动处理溢出元素。
2025-07-22 10:11:36
639
转载 值转换技巧:FuncValueConverter<TIn,TOut>
Avalonia UI 中有一个有趣的,它允许我们直接在代码后台简单地声明一个值转换器,而不需要额外写一个类。它地源代码可以在上看到。我们可以仿照这个实现一个类似的值转换器。
2025-02-10 14:38:11
283
原创 PCL点云库VFH识别聚类时HDF5.h报错
PCL点云库从入门到精通中运行案例:基于VFH描述子聚类识别与位姿估计 案例中,项目无法生成,报错位置->#include 。这主要是因为系统没有安装HDF5,下载安装之后配置头文件和动态链接库即可。
2024-11-26 11:55:18
281
原创 Label Studio 半自动化标注
Label Studio ML 后端是一个 SDK,用于包装您的机器学习代码并将其转换为 Web 服务器。Web 服务器可以连接到正在运行的 Label Studio 实例,以自动执行标记任务。我们提供了一个示例模型库,您可以在自己的工作流程中使用这些模型,也可以根据需要进行扩展和自定义。
2024-10-08 11:15:39
1709
原创 Label-Studio ML利用yolov8模型实现自动标注
Label Studio ML 后端是一个 SDK,用于包装您的机器学习代码并将其转换为 Web 服务器。Web 服务器可以连接到正在运行的 Label Studio 实例,以自动执行标记任务。我们提供了一个,您可以在自己的工作流程中使用这些模型,也可以根据需要进行扩展和自定义。如果您想改为编写自己的模型,请参阅。
2024-09-30 11:20:00
4914
原创 Avalonia:自定义控件
如果希望它具有可以由_Avalonia UI_样式系统设置的属性,则需要定义一个静态只读字段并使用方法来注册样式化属性。样式化属性将在运行时和预览面板中均起作用。//静态属性字段: Name + Property//实例公开访问属性Background//属性涉及的更改变化= null)使用注册的维护了一个优先级列表,其中包含允许样式工作的值和绑定。样式属性通过调用AddOwner来添加一个所有者,指定该属性所属对象,进行限定-- 这与以下方式相同 -->
2024-09-20 10:57:58
3274
原创 Avalonia:样式选择器、主题资源、绑定、动画
Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这意味着开发人员可以共享他们的UI代码,并在不同的目标平台上保持统一的外观和感觉。一个跨平台的UI框架,与跨平台.Net结合,为不同平台分发软件。
2024-09-19 09:22:39
2737
原创 WPF动画
Windows Presentation Foundation (WPF) 提供了一组强大的图形和布局功能,使用户能够创建引起注意的用户界面和有吸引力的文档。 动画不仅可以使引起注意的用户界面更加引人注目,还可以使其更加便于使用。 只需对背景色进行动画处理或应用经过动画处理的Transform,即可创造出生动的屏幕过渡效果或提供有帮助的视觉提示。动画类型包括 “From/To/By” 动画、关键帧动画、路径动画和抽象类 AnimationBase,动画都是继承自 Timeline 类的时间线
2024-09-17 19:52:31
1568
原创 WPF中依赖属性或附加属性的继承
WPF 中的许多控件使用定义控件的结构和外观,因为它可以将控件的外观和功能区分开来。重新定义可以极大地更改控件的外观。例如,假设需要在标签或左上角显示一个小圆点,以不同颜色表示状态。由于Label使用控件模板定义外观,因此很容易重新定义以符合该控件的要求,从而使用Label来制作交通信号灯。尽管有些时候可以使用,但在某些时候,光有还不够。定义控件内容的外观。当外观要求与默认外观存在很大差异,有必要重新定义。一般情况下,用于定义控件的内容(或数据),用于定义控件的构成方式。
2024-09-11 19:25:54
1161
原创 Winform中引入WPF控件后键盘输入无响应
Winform中如何引入WPF控件的教程很多,对于我们直接通过ElementHost引入的直接显示控件,它是可以响应键盘输入消息的,但对于在WFP中弹出的窗体来说,此时是无法响应我们的键盘输入的。我们需要给它使能键盘输入。
2024-09-10 17:45:43
939
原创 VS中.NET项目中央包管理和多目标框架配置
通常我们在做项目时会给不同的程序员分配不同的功能模块进行各自开发,当然要遵守一定的约定或同一的框架设计。这在同一个工程中就会出现不同的项目类库需要引用,而这些类库可能会引用一些Nuget包,对于这些包的管理如果都在每个项目中去定义版本就会显得麻烦,如果引用了不同的版本可能会导致意想不到的错误,并且查看这些包的版本也非常不方便。同时如果我们需要做目标多框架类库时,不同的框架有些包时是都支持的而有些有需要特定版本。
2024-09-10 17:04:18
1297
原创 ListBox等控件的SelectedItem,SelectedValue,SelectedValuePath属性详解
初学WPF可能会对诸如ComboBox、ListBox等集合控件的当前选择项的绑定有所疑惑,控件提供了两个可绑定对象:SelectedItem\SelectedValue,同时还有DisplayMemberPath\SelectedValuePath。本节来讲述一下它们的设计意图和用法。
2024-09-03 17:14:20
1500
原创 第八节:Nodify 编辑器属性
经过前几章的学习,你已经对Nodify框架有了初步的编程思路。当然只局限于这些还完全不够,本章节将阐述各个结构组件的一些常用属性,以便在日后的开发过程中更得心应手。
2024-08-23 16:22:05
2782
原创 第七节:Nodify 设置轴网格
绘制简单的网格只需创建一个网格画笔,同时将编辑器的变换持续应用于它,并将该画笔用作编辑器的Background。因为我们绘制的网格是由线条组成的,而不是填充的,所以编辑器的Background将具有一些透明度,这意味着我们会看到下面控件的背景颜色。为了解决这个问题,将编辑器包装在一个Grid中,并设置其Background,或者设置Window的。
2024-08-23 14:17:53
692
原创 第六节:Nodify 移除节点连接
要删除连接,只需监听来自连接器本身或编辑器的断开连接事件,并删除具有连接器作为源或目标的连接。为了简单起见,我们将为实现。
2024-08-23 14:12:09
1144
原创 第五节:Nodify 节点位置设置
如果你尝试过前几节的代码,会发现节点都是出现在0,0 位置,及编辑器左上角。编辑器作为最外层的交互控件,内部封装了节点容器ItemContrainer,我们通过样式属性对Loaction做绑定。本节将介绍如何配置节点位置。
2024-08-23 13:54:29
959
原创 第四节:Nodify 连接端子手动连接
第三节讲到,可以添加节点并通过后台代码连接端子。在实际的运用过程中通常需要在编辑器界面中去手动拖动端子进行连接,此时需要一个预连接模块,来存储手动拖动时接触的两个端子,并在鼠标松开后进行连接。
2024-08-23 13:39:56
764
原创 第三节:Nodify 添加连接关系
Nodify有三层结构,编辑器Editor,节点Node和连接组件Connection,上节介绍了节点和编辑器,本节介绍连接组件。连接组件用于保存节点中连接端子的连接关系,并随节点的拖动改变。
2024-08-23 12:47:15
798
4
原创 第二节:Nodify 添加节点到编辑器中
上节说到Nodify有三层结构,编辑器Editor,节点Node和连接组件Connection,下面就让我们来进行第一步尝试,在编辑器中添加一个节点。在窗口中添加nodify命名空间,并添加控件。
2024-08-23 11:57:46
1183
原创 第一节:Nodify 的简介和安装
Nodify 是专为 MVVM 设计的基于节点的编辑器的高性能控件集合。其中包含一系列节点、连接和连接器组件,旨在简化构建基于节点的工具的过程。它提供了一个节点图编辑器组件,可以嵌入到任何 WPF 应用程序中。该图形编辑器是一个无限区域,您可以在其中放置和移动节点,选择和拖动节点组,连接和断开节点或连接器,放大和缩小,以及在将节点或导线拖动到边缘附近时自动移动屏幕等。形状画布游乐场应用程序状态机“实时”计算器。
2024-08-23 11:13:41
1013
原创 NSI程序打包脚本文件编写教程
NSIS (Nullsoft Scriptable Install System) 是一个专业开源的制作 windows 安装程序的工具。我们通过HM NSIEDIT编写好脚本、编译即可生成exe安装包。安装过程中可以配置其安装包图标、名称、出版人、网站等。此外,还可以设置程序开机自启动、管理员权限运行等给基于注册表的操作,也可以运行批处理文件(bat文件)进行系统模块的安装。
2024-08-21 18:56:25
2779
1
原创 MVVM框架下的Mapster工具包
WPF应用程序的三层架构:Model->ViewModel->View。个人理解就是将后台的运行配置文件或则结果Model转换为可以与窗体交互的ViewModel,ViewModel 再与窗体进行深度绑定,实现后台与前端的解耦。ViewModel作为中间介质包含Model的开放属性,同时又有和View交互的衍生属性或则命令Command。Mapster提供了一种ModelViewModel的映射方法,通过Adapt扩展方法实现属性相互映射。
2024-05-08 15:38:29
1234
原创 附加属性和依赖属性
依赖属性可以提供数据绑定、样式、动画等功能,如果控件本身未提供而我们需要一些这样的功能,就需要编写依赖属性。依赖属性DP是控件/类的静态字段(只能在控件自身的类中编写),并且它只存在于依赖对象上(通过全局的静态HashTable存储这些控件/类的依赖属性)。附加属性是针对已有控件无法编写它的类,就没法为它添加依赖属性,需要将某些属性通过外在方式附加在该控件上,这也就决定了附加属性可以用在多种控件上。
2024-03-07 12:06:32
589
原创 Log4Net 工具二次封装
log4net是一个高度灵活且强大的日志记录库,可用于记录应用程序的运行时信息。它支持各种日志输出格式和目的地,如文件、数据库、控制台等。传统用法我们需要手动配置log4net.config文件,这极大不利于我们对日志文件的管理和分类,今天就介绍一种封装方法,可以便于我们利用代码动态生成配置和创建日志文件并记录日志信息。
2024-03-05 15:58:31
620
原创 Newtonsoft.Json
Newtonsoft.Json是一款高性能Json序列化和解析工具,开源免费!它使得配置文件的保存和读取变得简单,提供对类属性和字段的序列化控制,以及在序列化过程中或完成后执行相应的方法。
2024-02-29 18:31:05
6067
原创 行为和触发器
行为是高度可定制的独立类型,它为所属控件类型提供操作模式,但不局限于某一个控件。控件的界面逻辑大都可以被认为是行为,如TextBox被聚焦后自动权限、鼠标悬浮时背景变红色等。
2024-02-22 17:16:20
652
原创 可观测集合 ObservableCollection<T>、BindingList<T>
WPF中经常使用的是集合类型,数据条目经常按集合类型进行保存收纳,当我们向用户公开一些命令:添加、删除或刷新整个列表,如何通知界面进行准确的刷新呢?这时我们就需要使用可被观测的集合 ObservableCollection、BindingList。
2024-02-18 15:11:11
1415
原创 数据绑定ElementName与RelativeSource局限性
xaml代码中属性的绑定主要是通过元素名或类型进行查找绑定和解析的,但是当在后台生成控件或面对popup、menuitem时,发现他们都查找不到这时为什么呢?
2024-01-27 17:08:27
670
Avalonia跨平台开发项目模板
2025-09-25
Label-studio ml 后端YOLOV8 objectdetection-OBB模型的Model.py文件
2024-09-30
VOTT-2.2.0 windows版本
2024-08-29
log4net二次日志封装.zip
2024-03-05
YOLOv7 从GitHub上下载下来的代码,根据之前的5版本对比debug了一下,可以测试本地视频了
2022-07-19
c# Winform 自定义控件 缩放不卡顿。最大可放大至65535。ROI绘制 矩形 圆形 ROI修改
2022-05-06
c# Winform 自定义控件 8K大图显示,无限比例放大。ROI绘制 矩形 圆形 任意多边形,ROI修改
2022-05-06
PyQt5-5.9.2-5.9.3-cp35.cp36.cp37-none-win_amd64.whl
2020-12-30
tensorflow_gpu-2.0.0-cp36-cp36m-win_amd64.whl
2020-07-30
pyqt5_tools-5.9.2.1.3-cp36-none-win_amd64.whl
2020-12-30
EditPlus V2.12_改Liunx文件编辑器
2018-11-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅