首页 > 编程语言 >选择了Avalonia开发跨平台桌面程序

选择了Avalonia开发跨平台桌面程序

时间:2024-11-28 11:01:42浏览次数:5  
标签:桌面 支持 跨平台 开发 图形 Avalonia

需求:

  1. 客户端软件,支持跨平台(windows linux mac);
  2. 开源免费优先;
  3. 支持多语言;
  4. 学习门槛低,可快速上手;
  5. 绘图需求;
    1. 图形对象能支持操作;
    2. 支持绘制区域;
    3. 图形对象纠偏;
    4. 放大/缩小,移动;
    5. 支持SVG;
    6. 绘图和展示流畅性要求,需求为30000左右个绘制对象。

开发技术:

  1. 按开发语言:
    1. C#
      1. .NET Multi-Platform App UI
        1. 介绍:包含在.net6+后。 在一个框架中生成本机、跨平台桌面和移动应用。 跨平台 Windows、macOS 和 Linux 外,还包括 iOS 和 Android。支持SVG,提供基本的绘制能力,比如点,线,多边形等,有现成的和skiaSharp集成的组件SkiaSharp.Views.Maui.Controls https://github.com/dotnet/maui star22k 社区活跃
        2. 优点:
          1. demo丰富: Mandelbrot Animation 开发指引文档丰富 https://dotnet.microsoft.com/en-us/apps/maui
          2. UI component ecosystem 组件供应商(如Syncfusion、DevExpress、UX Divers、Telerik等)的漂亮的可重用UI组件。
        3. 缺点:没有xaml设计器 组件需要编码而不是可视化拖拽
      2. Avalonia11.1.3 /ˌævəˈloʊniə/
        1. 介绍: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 社区活跃
        2. 优点:
          1. demo丰富: https://github.com/AvaloniaUI/Avalonia.Samples 开发指引文档;
          2. 支持SVG,使用 Skia 作为其后端图形引擎,提供了良好的图形性能,允许使用skiasharp。windows上支持Direct2D,提供现成的组件:Avalonia.Svg.Skia;
          3. 有现成的UI开源库,如SukiUI;
        3. 缺点:没有xaml设计器 组件需要编码而不是可视化拖拽
      3. Uno Platform5.3.1
    2. C++
      1. QT6.X
        1. 介绍:1995年第一个版本,一直活跃在桌面程序开发。工具支持全生命周期,比如有设计器,开发IDE,数据分析等。QML语言。
        2. 优点:组件丰富,支持3D 完整的解决方案从设计,开发,测试,数据可视化分析。渲染是使用硬件加速渲染(如OpenGL或Vulkan)。可以实现高性能的图形渲染,适合开发图形密集型应用。
        3. 缺点:基于C++的开发学习成本高,上手慢。 高度集成和封装,后期问题排查成本高。针对开源的界定不太明确,对于商用存在一定风险。开源相关:LGPL 版本(比如 Qt 的 LGPLv3) 动态链接的方式使用 Qt 库,那么您不必公开您的源代码。但是,您需要在您的应用程序中声明使用了 Qt,并且提供获取 Qt 源代码的方法。
    3. JavaScript
      1. Electron Electron
        1. 介绍:一种将 Web 技术用于构建桌面应用程序的方法,可以说它是在 Web 应用的基础上“包了一层壳”。
        2. 优点:技术栈熟悉,开发门槛低。
        3. 缺点:包壳的技术对于图形密集型性能问题往往存在瓶颈,故不采用。
      2. electron-egg
        1. 基于electron的开箱可用的桌面软件开发解决方案。
        2. 优点:拿来即用。
        3. 缺点:对于定制化开发并不友好,高度集成的解决方案后期技术问题涉及咨询收费。
    4. Dart
      1. Flutte3.22.3
        1. 介绍:Flutter 是 Google 推出的一个用于开发移动应用的框架,Flutter 2.0 在 2021 年 3 月 4 日发布,这次大版本更新中引入了对桌面应用的支持,使得开发者能够使用同一套代码来开发 Windows、macOS、Linux 以及移动平台(Android 和 iOS)的应用程序。
        2. 优点:google大厂背书,作为移动端开发解决方案已经成熟,但在桌面应用方面刚起步,作为候选方案;
        3. 缺点:Dart语言嵌套的代码层级实在是不敢恭维。
      2. 2D 基于Canvas,3D支持需要单独引库 绘图基于skia,支持跨平台
    5. Go
      1. Wails 用于开发跨平台桌面应用程序的框架,它结合了 Go 语言的强大功能和 Vue.js 的前端框架优势。使用 Wails,你可以构建高性能的桌面应用程序,并且这些应用程序可以在 Windows、macOS 和 Linux 上运行。

绘图库:

  1. SkiaSharp

介绍:SkiaSharp 是一个跨平台的** 2D** 绘图库,它可以集成到 .NET MAUI 应用中,用于复杂的图形绘制。 https://github.com/mono/SkiaSharp star4.4k 维护中 支持SVG

分析:Avalonia图形绘制和渲染底层是基于Skia,并在Avalonia.skia组件中做了扩展。

  1. OpenGL

介绍:跨平台的图形 API,适用于 **2D 和 3D **渲染。有些平台上可能不提供最新的硬件特性。

分析:

  1. 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控制。

  1. ImageSharp

介绍:高性能跨平台.NET开源图形库 不支持GPU 社区活跃,star 7.3K 维护中

分析:

  1. unity游戏引擎

介绍:

分析:引入游戏引擎太重量,目前暂不考虑引入。

  1. sharpgl

介绍:https://github.com/dwmkerr/sharpgl star 753 社区不活跃 最后一次维护1年前

分析:

  1. openTk

介绍:跨平台 提供了OpenGL、OpenAL 和 OpenCL 的.NET绑定

分析:

总结:

  1. 技术选型是一项极其消耗功力的工作内容,需要一定的技术积累;
  2. 每一项技术都是有优点和不足方面的,在需求内选定最合适的;
  3. 选择小伙伴熟悉和擅长的开发语言是必要的;
  4. 本文只是粗略记录了点面,提供整体技术选型的思路,其实每个点面都可以展开具体。

其他:

本文算是对专栏《Avalonia跨平台开发》的承上启下,具体开发过程的问题会记录在那里。

授人以鱼,不如授人以渔。希望分享能帮助到广大的软件工作人员。

本文完。

标签:桌面,支持,跨平台,开发,图形,Avalonia
From: https://blog.csdn.net/jieyanqulaopo123/article/details/144104839

相关文章

  • 自动化工具有很多,按照不同的应用场景和功能特点可以分为多个类别。以下是一些常见的自
    自动化工具有很多,按照不同的应用场景和功能特点可以分为多个类别。以下是一些常见的自动化工具,根据它们的使用场景和功能进行分类:1. 桌面自动化工具这些工具主要用于自动化桌面应用程序的操作,例如模拟鼠标点击、键盘输入、窗口管理等。Sikuli:基于图像识别的自动化工具,适用于......
  • 常见的几款电脑桌面好用的便签备忘录推荐
    1、系统自带便笺Windows系统自带有便笺(stickynotes),打开即可使用,可记录简单的文字、图片,也可以列清单。但是不支持设置提醒时间,无法一直悬挂在桌面上显示,实时同步到手机端操作很麻烦。仅在电脑上简单记事,用它足够了!2、敬业签界面可以一直悬挂在桌面上置顶显示或嵌入桌面;支持......
  • 银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法
    银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法1、支持环境2、详细操作说明步骤1:用root账户登录电脑步骤2:导航到kylin-wm-chooser目录步骤3:编辑default.conf文件步骤4:重启电脑3、结语......
  • 全网首发:香橙派5MAX安装ubuntu20.04(换了官方桌面)及ros,运行LIVOX-mid360混合固态激光雷
    简单介绍这块板子:我这款OrangePi 5 Max采用Rockchip RK3588 8核64位处理器,4个Cortex-A76(主频2.4GHz)、4个Cortex-A55(主频1.8GHz)及独立的NEON协处理器。配备16GB LPDDR5,集成ARM Mali-G610,内置3D GPU。这里在安装ubuntu20.04时,我没用香橙派官方桌面镜像安装的,而是在server......
  • WinUI(WASDK)使用BotSharp框架开发多智能体桌面机器人管理助手(生图开关灯不在话下)
    前言大语言模型(LargeLanguageModels,LLMs)近年来在各行各业中展现出了巨大的潜力和影响力。从自然语言处理到自动化客服,从内容生成到智能助手,LLMs正在改变我们与技术互动的方式。随着技术的不断进步,LLMs的应用场景也在不断扩展,成为未来发展的重要趋势。这篇文章将介绍如何使用W......
  • [Avalonia] 练习一:搭建Avalonia+Prism+Material项目
    这是个练手项目,初次接触Avalonia,决定搭建一个架构由Prism实现,UI基于Material的演示基本控件、自定义控件、遮罩、弹窗、标签页等UI基础的桌面项目,实现这些UI基础,基于WPF转Avalonia应该就没太大的问题了。一、新建项目。新建空白解决方案AvaloniaApps。新建项目,选择Avaloni......
  • 揭秘系统架构师的电脑桌面:隐藏的工作秘密大公开!
    文章目录一、前言二、Windows相关三、编辑器相关四、云开发相关4.1IDE4.2工具五、工具相关六、嵌入式相关七、美工相关八、产品相关九、其他一、前言总有同事和妹子想看我的电脑桌面,看看我装了哪些软件。今天就满足你,花了不少时间整理一下(#.#)二、Windows......
  • 麒麟v10上安装麒麟桌面和VNC
    直接上命令yum-ygroupinstall"ServerwithUKUIGUI"yum-yinstalltigervnc-server.x86_64systemctlget-defaultsystemctlset-defaultgraphical.targetvncpasswdcp/lib/systemd/system/vncserver@.service/etc/systemd/system/vncserver@:1.service......
  • Avalonia 中使用 CEF 在 Ubuntu 运行崩溃分析
    在Linux上使用Avalonia和CefGlue:崩溃分析介绍本文主要记录了在Avalonia中使用CefGlue(基于.NET的Chrome嵌入内核的封装库)时遇到的问题,目的是测试Avalonia的Chrome内核在Linux系统中的兼容性。然而在实际运行时,我们意外地遇到了运行崩溃的问题。环境测试环境......
  • 桌面软件识别截图区域识别实例
    first:1、使用pyautogui截图+拼接 2、使用lackey截图+识别importpyautogui"""整凭截图"""im1=pyautogui.screenshot()im2=pyautogui.screenshot('my_screenshot.png')"""区域截图"""importpyautoguiim=py......