需求:
- 客户端软件,支持跨平台(windows linux mac);
- 开源免费优先;
- 支持多语言;
- 学习门槛低,可快速上手;
- 绘图需求;
- 图形对象能支持操作;
- 支持绘制区域;
- 图形对象纠偏;
- 放大/缩小,移动;
- 支持SVG;
- 绘图和展示流畅性要求,需求为30000左右个绘制对象。
开发技术:
- 按开发语言:
- C#
- .NET Multi-Platform App UI
- 介绍:包含在.net6+后。 在一个框架中生成本机、跨平台桌面和移动应用。 跨平台 Windows、macOS 和 Linux 外,还包括 iOS 和 Android。支持SVG,提供基本的绘制能力,比如点,线,多边形等,有现成的和skiaSharp集成的组件SkiaSharp.Views.Maui.Controls https://github.com/dotnet/maui star22k 社区活跃
- 优点:
- demo丰富: Mandelbrot Animation 开发指引文档丰富 https://dotnet.microsoft.com/en-us/apps/maui
- UI component ecosystem 组件供应商(如Syncfusion、DevExpress、UX Divers、Telerik等)的漂亮的可重用UI组件。
- 缺点:没有xaml设计器 组件需要编码而不是可视化拖拽
- Avalonia11.1.3 /ˌævəˈloʊniə/
- 介绍:Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET UI client technology https://github.com/AvaloniaUI/Avalonia star 25.1k 社区活跃
- 优点:
- demo丰富: https://github.com/AvaloniaUI/Avalonia.Samples 开发指引文档;
- 支持SVG,使用 Skia 作为其后端图形引擎,提供了良好的图形性能,允许使用skiasharp。windows上支持Direct2D,提供现成的组件:Avalonia.Svg.Skia;
- 有现成的UI开源库,如SukiUI;
- 缺点:没有xaml设计器 组件需要编码而不是可视化拖拽
- Uno Platform5.3.1
- .NET Multi-Platform App UI
- C++
- QT6.X
- 介绍:1995年第一个版本,一直活跃在桌面程序开发。工具支持全生命周期,比如有设计器,开发IDE,数据分析等。QML语言。
- 优点:组件丰富,支持3D 完整的解决方案从设计,开发,测试,数据可视化分析。渲染是使用硬件加速渲染(如OpenGL或Vulkan)。可以实现高性能的图形渲染,适合开发图形密集型应用。
- 缺点:基于C++的开发学习成本高,上手慢。 高度集成和封装,后期问题排查成本高。针对开源的界定不太明确,对于商用存在一定风险。开源相关:LGPL 版本(比如 Qt 的 LGPLv3) 动态链接的方式使用 Qt 库,那么您不必公开您的源代码。但是,您需要在您的应用程序中声明使用了 Qt,并且提供获取 Qt 源代码的方法。
- QT6.X
- JavaScript
- Electron Electron
- 介绍:一种将 Web 技术用于构建桌面应用程序的方法,可以说它是在 Web 应用的基础上“包了一层壳”。
- 优点:技术栈熟悉,开发门槛低。
- 缺点:包壳的技术对于图形密集型性能问题往往存在瓶颈,故不采用。
- electron-egg
- 基于electron的开箱可用的桌面软件开发解决方案。
- 优点:拿来即用。
- 缺点:对于定制化开发并不友好,高度集成的解决方案后期技术问题涉及咨询收费。
- Electron Electron
- Dart
- Flutte3.22.3
- 介绍:Flutter 是 Google 推出的一个用于开发移动应用的框架,Flutter 2.0 在 2021 年 3 月 4 日发布,这次大版本更新中引入了对桌面应用的支持,使得开发者能够使用同一套代码来开发 Windows、macOS、Linux 以及移动平台(Android 和 iOS)的应用程序。
- 优点:google大厂背书,作为移动端开发解决方案已经成熟,但在桌面应用方面刚起步,作为候选方案;
- 缺点:Dart语言嵌套的代码层级实在是不敢恭维。
- 2D 基于Canvas,3D支持需要单独引库 绘图基于skia,支持跨平台
- Flutte3.22.3
- Go
- Wails 用于开发跨平台桌面应用程序的框架,它结合了 Go 语言的强大功能和 Vue.js 的前端框架优势。使用 Wails,你可以构建高性能的桌面应用程序,并且这些应用程序可以在 Windows、macOS 和 Linux 上运行。
- C#
绘图库:
- SkiaSharp
介绍:SkiaSharp 是一个跨平台的** 2D** 绘图库,它可以集成到 .NET MAUI 应用中,用于复杂的图形绘制。 https://github.com/mono/SkiaSharp star4.4k 维护中 支持SVG
分析:Avalonia图形绘制和渲染底层是基于Skia,并在Avalonia.skia组件中做了扩展。
- OpenGL
介绍:跨平台的图形 API,适用于 **2D 和 3D **渲染。有些平台上可能不提供最新的硬件特性。
分析:
- Vulkan
介绍:Vulkan is a cross-platform industry standard enabling developers to target a wide range of devices with the same graphics API.
分析:vulkan称为“下一版本的OpenGL”,旨在提供更低的CPU开销和更多GPU控制。
- ImageSharp
介绍:高性能跨平台.NET开源图形库 不支持GPU 社区活跃,star 7.3K 维护中
分析:
- unity游戏引擎
介绍:
分析:引入游戏引擎太重量,目前暂不考虑引入。
- sharpgl
介绍:https://github.com/dwmkerr/sharpgl star 753 社区不活跃 最后一次维护1年前
分析:
- openTk
介绍:跨平台 提供了OpenGL、OpenAL 和 OpenCL 的.NET绑定
分析:
总结:
- 技术选型是一项极其消耗功力的工作内容,需要一定的技术积累;
- 每一项技术都是有优点和不足方面的,在需求内选定最合适的;
- 选择小伙伴熟悉和擅长的开发语言是必要的;
- 本文只是粗略记录了点面,提供整体技术选型的思路,其实每个点面都可以展开具体。
其他:
本文算是对专栏《Avalonia跨平台开发》的承上启下,具体开发过程的问题会记录在那里。
授人以鱼,不如授人以渔。希望分享能帮助到广大的软件工作人员。
本文完。
标签:桌面,支持,跨平台,开发,图形,Avalonia From: https://blog.csdn.net/jieyanqulaopo123/article/details/144104839