『7x24小时有问必答』

前言

用 LabVIEW 做测控系统的人应该都有同感:硬件控制能力没得说,但界面总差那么点意思。灰色的面板、方方正正的按钮、毫无生气的指示灯,跟现在那些圆角阴影交互动画并存的软件一比,像是两个时代的东西。之前做项目时就在想,有没有一种办法,能把 LabVIEW 强大的后端逻辑和 WPF 漂亮的前端表现结合起来?

项目介绍

WPF 控件生成器是一套为 LabVIEW 量身打造的 WPF 前端控件工具套件。它不只是一个控件库,更是一个可视化的设计器,你不需要写 XAML,不需要装 Visual Studio,直接在界面上点一点、拖一拖,就能生成一个带圆角、阴影、平滑动画的 WPF 控件,然后一键导出成 LabVIEW 能调用的 DLL。
说白了,它就是个桥梁,把 LabVIEW 的后台逻辑和 WPF 的现代化界面串在了一起。

项目功能

可视化控件设计:打开 exe 就能用,左边选控件类型,右边调属性,颜色、圆角、大小、字体全部实时预览
一键导出 DLL:设计好的控件直接生成 .NET DLL,LabVIEW 加载后就能用,不需要额外编译步骤
16 款高频工业控件:涵盖文本输入、数值显示、滑动杆、按钮、下拉列表、指示灯、开关、进度条、波形图、饼图、仪表盘、数据表格、树形面板、侧边导航、顶边导航、图标按钮
顶边导航栏(v3.2 新增):横向导航方案,支持动态增删标签、自定义 Logo,选中项带底部高亮指示条和沉降动画
图标按钮(v3.2 新增):紧凑型按钮,支持 Emoji、字符图标和 PNG/SVG 图片混合模式,按压回弹手感与侧边栏一致
全量字体穿透(v3.2 新增)  :可视化字体选择器,支持系统所有已安装字体,样式可深入 TreeView 节点、ComboBox 下拉项、DataGrid 单元格等子元素
LabVIEW 事件全识别(v3.2 新增):底层重构了事件总线,LabVIEW 事件结构中能自动解析出 ItemSelected、Click 等命名清晰的事件分支
色彩双轨互通:同时支持网页 HEX 格式和 LabVIEW 原生 U32 整型色彩值,两端传颜色不用来回换算

项目特点

零门槛:不需要 XAML 知识,不需要安装 Visual Studio,打开工具就能上手
所见即所得:属性调整实时反映在预览区,不用反复编译试错硬件加速:控件基于 WPF 渲染,充分利用 GPU,动画流畅不丢帧
物理感交互:按钮带阻尼按压回弹、滑动杆带流体色彩过渡、导航切换带沉降动画,手感细腻
全栈闭环:从设计、预览到导出 DLL,再到 LabVIEW 调用,一条线走完,不依赖第三方工具
向后兼容:支持 .NET 4.0 到 4.8 框架,LabVIEW 2018 及以上版本 32/64 位通吃

项目技术

技术组件
作用
C# / WPF
控件核心开发语言与 UI 渲染框架,负责所有界面元素与动画
.NET Framework 4.0 ~ 4.8
运行时环境,导出 DLL 的目标框架,兼容主流 Windows 版本
LabVIEW .NET 容器
LabVIEW 端加载 DLL 并调用控件属性、方法、事件的宿主机制
XAML(引擎内部生成)
用户无需手写,设计器根据可视化配置自动生成
HEX / U32 双轨色彩引擎
同时解析网页颜色值与 LabVIEW 整型颜色值,两端色彩一致
显式委托事件总线
底层重构的事件机制,确保 LabVIEW 能准确识别并列出所有事件分支

项目代码

整个工程的结构很清晰,核心目录如下:
WPF控件生成器 v3.2/

├── WPF控件生成器 v2.6.exe         # 可视化设计器主程序

├── ControlDesigner/                    # 设计器界面源码(WPF)

├── ExportTemplate/                     # 导出模板工程,免 VS 编译

├── Themes/                                 # 预设主题文件存放

├── UI/                                       # 导出的 DLL、API 文档、错误日志

└── README.md

一段典型的导出控件调用逻辑(C# 侧)

生成器底层自动生成的控件继承自  UserControl,暴露出 LabVIEW 可识别的公共属性和事件。比如一个按钮控件,简化后的代码大致是这样的:
public  partial  class  NeoButton  :  UserControl

{

       public  static  readonly  DependencyProperty ButtonTextProperty =

            DependencyProperty.Register("ButtonText",  typeof(string),  typeof(NeoButton));

       public  string  ButtonText

      {

             get  => (string)GetValue(ButtonTextProperty);

             set  => SetValue(ButtonTextProperty,  value);

      }

       public  static  readonly  RoutedEvent ClickEvent =

            EventManager.RegisterRoutedEvent("Click", RoutingStrategy.Bubble,  typeof(RoutedEventHandler),  typeof(NeoButton));

       public  event  RoutedEventHandler Click

      {

             add  => AddHandler(ClickEvent,  value);

             remove  => RemoveHandler(ClickEvent,  value);

      }

       private  void  OnButtonClick(object  sender, RoutedEventArgs e)

      {

            RaiseEvent(new  RoutedEventArgs(ClickEvent));

      }

}

这段代码里,ButtonText  是 LabVIEW 中可以读写的属性,Click  是 LabVIEW 事件结构中能自动识别并生成分支的事件。导出引擎会把这类控件连同所有依赖属性一起打包成 DLL,LabVIEW 加载后,属性会出现在 .NET 容器的属性面板里,事件会出现在事件结构的下拉列表中。

LabVIEW 端的调用方式

在 LabVIEW 中,通过  .NET 构造函数  节点加载生成的 DLL,然后就可以像使用原生 .NET 控件一样,用属性节点读写颜色、文字、数值,用事件节点响应点击、选择等操作。整个过程不需要额外写一行 C# 代码。

项目效果

打开设计器,主界面是典型的拟态风格,控件列表在左侧,属性面板在右侧,中间是实时预览区。随便拖一个滑块,调一下颜色渐变范围,滑动时的色彩过渡动画相当丝滑。再试一下侧边导航栏,点击不同菜单项,高亮条会带一点阻尼感地滑过去,而不是生硬地跳转。
导出 DLL 后,在 LabVIEW 前面板放置一个 .NET 容器,加载 DLL,刚才设计的控件就原样出现在界面上。所有属性都能读写,所有事件都能触发,和 LabVIEW 自带的控件用起来没什么两样,但颜值提升了一个量级。

项目源码

GitHub:https://github.com/tylerwind/LabVIEW-WPF-UI-Generator

总结

LabVIEW 在工业测控领域的地位不用多说,但它的 UI 确实有点跟不上时代。这个 WPF 控件生成器给了一个很实际的解决方案:不改变 LabVIEW 的开发习惯,不增加额外学习成本,就能把 WPF 的现代化界面能力接进来。从 v2.0 到 v3.2,侧边栏、顶边栏、图表聚合、事件总线、字体穿透,每一个版本都在解决实际使用中遇到的痛点。
如果你也受够了 LabVIEW 原生控件的老旧风格,又不想从头学 WPF 和 XAML,这个工具值得试一试。它不是要取代 LabVIEW 的控件体系,而是在你需要更好看、更流畅的界面时,多一个靠谱的选择。

关键词

WPF、LabVIEW、控件生成器、DLL导出、拟态设计顶边导航、图标按钮、字体穿透、事件总线色彩引擎、硬件加速、.NET互操作、零代码设计工业自动化
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠]  社区,与其他热爱技术的同行一起交流心得,共同成长!
作者:小码编匠
出处:gitee.com/smallcore/DotNetCore
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!

END

推荐阅读

觉得有收获?不妨分享让更多人受益
关注「DotNet技术匠」,共同提升技术实力

收藏
点赞
分享
在看

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码