使用.NET6 Avalonia开发跨平台三维应用

news2024/11/24 15:03:56

本文介绍在Vistual Studio 2022中使用Avalonia和集成AnyCAD Rapid AvaloniaUI三维控件的过程。

0 初始化环境

安装Avalonia.Templates

dotnet new install Avalonia.Templates

若之前安装过可忽略此步骤。

1 创建项目

选择创建AvaloniaUI项目
创建项目

选一下.NET6版本和Avalonia版本
版本选择

2 配置项目

2.1 安装AnyCAD AvaloniaUI组件

从nuget.org上安装AnyCAD AvaloniaUI。

安装AnyCAD Rapid Avalonia

2.2 增加HDPI支持

修改app.manifest,在尾部增加 asmv3:application 相关配置

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
    
	<!-- 新增加的内容,支持HDPI -->
	<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
		<asmv3:windowsSettings>
			<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware>
			<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness>
		</asmv3:windowsSettings>
	</asmv3:application>
</assembly>

3 设计界面

在MainWindow.axaml里面集成AnyCAD Rapid控件:

  • 首先引入程序集: AnyCAD.Avalonia.NET6:
xmlns:anycad="clr-namespace:AnyCAD.AvaloniaUI;assembly=AnyCAD.Avalonia.NET6"
  • 设计布局

直接加个Button和三维控件。完整的xaml如下:

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
		xmlns:anycad="clr-namespace:AnyCAD.AvaloniaUI;assembly=AnyCAD.Avalonia.NET6"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="AnyCAD.AvaloniaApp.MainWindow"
        Title="AnyCAD.AvaloniaApp">
	<StackPanel>
	    <Button Content="打开" Width="160"/>
	    <anycad:RenderControl x:Name="mRenderView" Width="800" Height="600"></anycad:RenderControl>
	</StackPanel>
</Window>


4 初始化控件

在Program.cs修改初始化代码, Main函数做修改

        [STAThread]
        public static void Main(string[] args)
        {
            // 初始化
            AnyCAD.Foundation.GlobalInstance.Initialize();

            BuildAvaloniaApp()
        .StartWithClassicDesktopLifetime(args);

            // 释放资源
            AnyCAD.Foundation.GlobalInstance.Destroy();
        }

运行一下:
预览

5 显示模型

  • MainWindow函数中响应一下Buttond的Click事件
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();           
        }

        public void OnOpen(object sender, RoutedEventArgs e)
        {
            var dlg = new OpenFileDialog();
            dlg.Filters.Add(new FileDialogFilter() { Name = "Model Files", Extensions = { "step", "stp", "iges", "igs" } });

            var result = dlg.ShowAsync(this);
            if (result == null)
                return;

            string fileName = result.Result[0];

            var shape = ShapeIO.Open(fileName);
            if(shape != null)
            {
                var node = BrepSceneNode.Create(shape, null, null);
                var scene = mRenderView.Scene;
                scene.AddNode(node);

                mRenderView.ViewContext.RequestUpdate(EnumUpdateFlags.Scene);
            }
        }
    }

再运行一下,打开个模型
显示模型

6 总结

AvaloniaUI一款优秀的跨平台.NET UI库,结合AnyCAD Rapid .NET for AvaloniaUI,就可以快速开发跨平台的三维应用。

本文完整代码:anycad.rapid.net.sample

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1422470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADB的配置和使用及刷机root

ADB的配置和使用 ADB即Android Debug Bridge&#xff0c;安卓调试桥&#xff0c;是谷歌为安卓开发者提供的开发工具之一&#xff0c;可以让你的电脑以指令窗口的方式控制手机。可以在安卓开发者网页中的 SDK 平台工具页面下直接下载对应系统的 adb 配置文件&#xff0c;大小只…

腾讯云0基础10秒搭建幻兽帕鲁游戏联机服务器

幻兽帕鲁&#xff08;Palworld&#xff09;是一款多人在线游戏&#xff0c;为了获得更好的游戏体验&#xff0c;需要搭建一个稳定、高效的游戏联机服务器。腾讯云提供了一种简单、快速的方法&#xff0c;让新手小白也能0基础10秒搭建幻兽帕鲁游戏联机服务器&#xff01; 本文将…

人工视觉仍然需要图像采集卡

最初&#xff0c;图像采集卡被用作模拟视频数字转换器和图像缓冲器&#xff0c;但如今它们能够执行复杂的任务&#xff0c;例如图像处理。图像采集卡的设计不断发展&#xff0c;旨在提高系统性能并减少计算机处理需求。 除了图像采集之外&#xff0c;图像采集卡还执行机器视觉…

【前端-VUE+TS】Vue3组件化-下(五)

一. 插槽的使用 1.1. 认识插槽slot 在开发中&#xff0c;我们会经常封装一个个可复用的组件&#xff1a; 前面我们会通过props传递给组件一些数据&#xff0c;让组件来进行展示&#xff1b;但是为了让这个组件具备更强的通用性&#xff0c;我们不能将组件中的内容限制为固定的d…

如何在Excel中清除单元格的格式?这里有详细步骤

Microsoft Excel提供了大量样式选项来自定义电子表格的外观。但是&#xff0c;如果你需要删除格式&#xff0c;则可以很容易地删除选定单元格和整个工作表的格式。我们将向你展示如何操作。 ​注意&#xff1a;清除格式只会删除文本的样式&#xff1b;将保留你的实际文本。 如…

基于Android的成人教育课程学习考试系统uniAPP的 小程序_12lo1

APP性能需求 &#xff08;1&#xff09;会员在安卓App页面各种操作可及时得到反馈。 &#xff08;2&#xff09;该平台是提供给多个会员使用的平台&#xff0c;会员使用之前需要注册登录。登录验证后&#xff0c;会员才可进行各种操作[10]。 &#xff08;3&#xff09;管理员用…

在线视频链接怎么做成二维码?扫码播放在线视频的制作方法

怎么把在线视频链接做成二维码图片分享给其他人呢&#xff1f;现在通过二维码来传递内容是很多人在用的一种方式&#xff0c;比如文件、视频、音频、网址等都可以用二维码生成器来做成二维码图片后使用。 采用二维码图片的方式可以有效的降低成本&#xff0c;提高传播的速度&a…

马哈鱼SQLFlow Lite的python版本

Gudu SQLFlow 是一款用来分析各种数据库的 SQL 语句和存储过程来获取复杂的数据血缘关系并进行可视化的工具。 Gudu SQLFlow Lite version for python 可以让 python 开发者把数据血缘分析和可视化能力快速集成到他们自己的 python 应用中。 Gudu SQLFlow Lite version for p…

【web | CTF】攻防世界 easyupload

天命&#xff1a;好像也不太easy 目录 步骤一&#xff1a;准备文件 步骤二&#xff1a;上传文件 本条题目有好几个防御点&#xff1a; 后缀名防御&#xff1a;只能上传图片格式内容防御&#xff1a;内容不能有php图片头防御&#xff1a;检测文件的头部信息&#xff0c;是否是…

[NCTF2019]Fake XML cookbook(特详解)

先试了一下弱口令&#xff0c;哈哈习惯了 查看页面源码发现xml function doLogin(){var username $("#username").val();var password $("#password").val();if(username "" || password ""){alert("Please enter the usern…

iZotope RX 10.4.2 mac激活版 音频修复和增强工具

iZotope RX 10 for Mac是一款专业的音频修复软件&#xff0c;旨在提供强大、精确的工具&#xff0c;让用户能够清晰、纯净地处理音频。以下是其主要功能和特点&#xff1a; 软件下载&#xff1a;iZotope RX 10.4.2 mac激活版下载 强大的降噪功能&#xff1a;iZotope RX 10采用了…

Mushroom Monsters - Fantasy RPG

蘑菇怪物PBR是一个2米高的生物。他可以摆出三种静态姿势中的任何一种,等待他的对手感到惊讶,或者他可以四处奔跑,攻击和施放法术,甚至冲锋。他用头撞击敌人,可以跳起来撞击他们,也可以低头直冲。他还有一个“魔法”攻击,扭动头部并切削。 使用混合形状功能将网格变形为无…

【项目日记(六)】第二层: 中心缓存的具体实现(下)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

fullcalendar案例

fullcalendar案例 <script srchttps://cdn.jsdelivr.net/npm/fullcalendar6.1.10/index.global.min.js></script><script srchttps://code.jquery.com/jquery-3.6.0.min.js></script> <!-- 引入 jQuery CDN --><script>document.addEventL…

防御挂马攻击:从防御到清除的最佳实践

挂马攻击&#xff0c;也称为马式攻击&#xff08;Horse Attack&#xff09;&#xff0c;是一种常见的网络攻击手段。攻击者通过在目标服务器或网站中植入恶意程序&#xff0c;以获取系统权限或窃取敏感信息。为了应对这种威胁&#xff0c;本文将重点介绍防御挂马攻击的最佳实践…

D6282——4.6W 双路音频功率放大电路,开机噪音小内置热保护电路,最佳电源电压 9V、12V, 工作电源电压范围:Vcc=6~15V

D6282 是双路音频功率放大集成电路&#xff0c;内置温度过热保护电路、功率调 整开关。适用于便携式收录机作音频功率放大。 该电路采用 FSIP12 的封装形式封装。 主要特点&#xff1a;  输出功率大 P OUT 2.5W/CH( 典型 ) (Vcc9V,R L 4 Ω ,f1kHz,THD10%) P OUT 4.6W/…

深度学习与神经网络pytorch版 2.3 线性代数

深度学习与神经网络pytorch版 2.3 线性代数 目录 深度学习与神经网络pytorch版 2.3 线性代数 1. 简介 2. 线性代数 2.3.1 标量 ​编辑2.3.2 向量 2.3.3 矩阵 2.3.4 张量及其性质 2.3.5 降维 2.3.6 非降维求和 2.3.7 点积 2.3.8 矩阵-向量积 2.3.9 矩阵-矩阵乘法 …

什么是八木天线,八木天线的作用是什么?

八木天线的得名其实不是由于其有八根天线。 八木天线由一个有源振子&#xff08;一般用折合振子&#xff09;、一个无源反射器和若干个无源引向器平行排列而成的端射式天线&#xff0c;由提出者的名字命名。 上个世纪二十年代&#xff0c;日本东北大学的八木秀次和宇田太郞两人…

JS逆向实战27——pdd的anti_content 分析与逆向

声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 本文已在微信公众号发布 …

Activiti工作流引擎

一、工作流介绍&#xff1a; 1.1 概念&#xff1a; 工作流(Workflow)&#xff0c;就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程&#xff0c;从而实现某个预期的业务目标&#xff0c;或…