当前位置: 首页 > news >正文

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

本文介绍在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.lryc.cn/news/291038.html

相关文章:

  • linux(ubuntu)中crontab定时器命令详解 以及windows中定时器
  • 植物病害检测YOLOV8,OPENCV调用
  • C++初阶:入门泛型编程(函数模板和类模板)
  • 【RT-DETR有效改进】CARAFE提高精度的上采样方法(助力细节长点)
  • leetcode 27.移除元素(python版)
  • 分布式场景怎么Join
  • springboot2.7继承swagger knif4j
  • C++ 实现单例模式
  • Java多线程--线程安全问题练习题
  • PHY6252低成本Mesh组网蓝牙芯片
  • 红外图像中两点校正的增益系数与偏置系数的计算公式推导
  • C++/MFC:在窗体Form(Dialog)中多个编辑框时,在输入时将回车解释为TAB键,将输入焦点移到下一个编辑框的方法
  • 鸿蒙南向开发——GN快速入门指南
  • PyCharm常用快捷键和设置
  • Unity - 调节camera物理相机参数(HDRP)
  • @JsonIgnore的使用及相关问题的解决
  • 万户 ezOFFICE SendFileCheckTemplateEdit.jsp SQL注入漏洞
  • 自建DNS劫持服务器,纯内网劫持PS5,屏蔽更新,自动hen
  • C语言王道第八周一题
  • 探索1688店铺所有商品API接口:一键获取海量数据,开启商业智能新篇章
  • 使用Win32API实现贪吃蛇小游戏
  • 力扣0114——二叉树展开为链表
  • FPGA硬件架构
  • spring boot 嵌入chatGPT步骤
  • 博云科技与中科可控全面合作,探索前沿金融科技新机遇
  • 十一、常用API——练习
  • 基于ssm和微信小程序的健身房私教预约管理系统
  • 微服务架构
  • 山体滑坡在线安全监测预警系统(解决方案)
  • StarRocks -- 基础概念(数据模型及分区分桶)