惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
腾讯CDC
M
MIT News - Artificial intelligence
Y
Y Combinator Blog
L
LangChain Blog
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog
P
Proofpoint News Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
IT之家
IT之家
A
About on SuperTechFans
H
Help Net Security

博客园 - 麦壳饼

JekyllNet .Net 版本的Jekyll , 你博客 文档的静态生成利器 。 我把 WinFormsVncDemo 真正带到了 VNC 链路上 Ubuntu 22.04 systemd 升级失败解决全记录:dpkg “无效的跨设备链接” 错误(bind mount 导致) .Net 7.0 AOT /usr/bin/ld: cannot find -lz 暴力升级你的 ST-Link 及 STM32CubeIDE 如何像使用AspNetCore中的Controllers 和 Actions一样处理MQTT消息 龙芯.Net 6.0 SDK安装 用C#为国产智能手表写“Hello, China. ” CANopen伺服控制-服务数据对象(SDO)详细解析 IoTSharp部署教程-Sqlite分表篇 IoTSharp 已支持国产松果时序数据库PinusDB IoTSharp v1.6.0 发布 增加多种数据库支持 Cannot open libmwv206dec.so, libmwv206dec.so: cannot open shared object file: No such file or directory 引用了Maikebing.Data.Taos的.Net Core项目,在 docker 部署的时候提示缺少taos依赖 基于.Net Core开发的物联网平台 IoTSharp V1.5 发布 如何在龙芯3B4000上部署基于.Net Core 开发的物联网平台IoTSharp 使用C#编写STM32对接物联网平台IoTSharp发送遥测数据 用C#在STM32上写第一个Hello world SilkierQuartz 1.0.21 发布, 是一个 Quartz.NET 的强大且简单的Web管理工具和承载组件
为什么要做 WinForms over LVGL
麦壳饼 · 2026-03-24 · via 博客园 - 麦壳饼

如果你第一次接触这个项目,建议先从这篇开始。我们会先回答为什么要做这件事,以及这条路线到底值不值得走。

一个长期存在的问题

在 .NET 桌面开发里,WinForms 依旧是最高效、最直接的一类 UI 技术之一。它简单、稳定、容易上手,也积累了大量历史项目和工程经验。

但当应用目标从 Windows 桌面走向 Linux、设备侧、嵌入式屏幕,甚至希望进一步进入 NativeAOT 和最小运行时部署时,WinForms 原本的优势开始遇到边界。

这个时候,开发者通常会面对两种选择:

  • 继续保留 WinForms,放弃跨平台和设备端目标
  • 放弃 WinForms,切到更底层、更适合设备端的 UI 技术栈

而 LVGLSharp.Forms 想探索的是第三条路:

保留 WinForms 的开发方式,把渲染能力切换到底层的 LVGL。

为什么不是直接写 LVGL

LVGL 本身很强,尤其在嵌入式和轻量 GUI 领域。但它更偏底层,对 .NET 开发者来说,并不是一条“立刻就熟悉”的路径。

如果团队已经长期使用 WinForms,那么直接切到纯 LVGL,通常意味着:

  • 开发范式整体切换
  • 控件模型重新适应
  • 生命周期和布局思维重建
  • 大量已有代码和经验无法直接复用

LVGLSharp.Forms 的意义,在于尽量降低这道迁移门槛。

为什么要保留 WinForms 心智模型

WinForms 的价值从来不只是一个 API 集合,而是一整套开发心智模型:

  • 窗体
  • 控件树
  • 事件驱动
  • 设计器友好
  • 面向业务 UI 的结构化开发方式

这个项目试图证明:

在很多业务 UI 场景里,开发者真正想保留的不是 Windows 本身,而是 WinForms 那种高效率的组织方式。

LVGLSharp.Forms 的桥接思路

项目采用的不是“把每个 WinForms API 生硬映射一遍”,而是分层桥接:

  • 上层:保留 WinForms 风格 API
  • 中层:运行时与控件桥接
  • 下层:LVGL 渲染与平台宿主

这样可以把平台复杂性收敛到运行时层,把业务开发尽量留在熟悉的 Forms 层。

这条路线的价值

如果这条路线持续走通,它的价值不只是“让某几个 demo 跑起来”,而是可能形成一套新的跨平台 .NET GUI 工程方式:

  • 上层仍然像 WinForms 一样高效
  • 下层具备 LVGL 的轻量和设备适应性
  • 发布层具备 NativeAOT 和最小依赖能力

结语

WinForms over LVGL 不是简单的兼容实验,而是一种工程上的取舍:

  • 不放弃开发效率
  • 不放弃跨平台和设备目标
  • 不把所有复杂性都推给应用开发者

这正是 LVGLSharp.Forms 想要持续证明的方向。