.NET6 开发基于WPF的摩登三维工业软件

前言

一、 设置暗黑主题

利用MergedDictionaries配置,在已有的通用风格基础上添加Dark.Blue主题。代码如下:

< Application.Resources>

< ResourceDictionary>

< ResourceDictionary.MergedDictionaries>

< ResourceDictionarySource= “pack://application:,,,/Fluent;Component/Themes/Generic.xaml”/>

< ResourceDictionarySource= “pack://application:,,,/Fluent;component/Themes/Themes/Dark.Blue.xaml”/>

</ ResourceDictionary.MergedDictionaries>

</ ResourceDictionary>

</ Application.Resources>

运行一下:

主题已经变成了暗黑模式。

二、给Button增加图标

2.1、引入图片

在项目目录下增加Resources目录,把circle.png复制到Resources目录下。

在项目浏览器中把图片添加到项目,选择Resources目录,右键菜单:

选择Resources/circle.png

2.2、设置图片属性

择图片,在属性面板中设置:

  • 复制到输出目录:始终复制

  • 生成操作:内容

  • 按照上述步骤加入其他的图片。

    2.3、Ribbon Button中使用图片

    为Fluent:Button设置Icon属性,引用图片资源

    <!–Tabs–>

    < Fluent:RibbonTabItemHeader= “建模”>

    < Fluent:RibbonGroupBoxHeader= “基本体”IsLauncherVisible= “False”>

    < Fluent:ButtonHeader= “直线”Icon= “/Resources/line.png”Size= “Large”/>

    < Fluent:ButtonHeader= “圆弧”Icon= “/Resources/arc3pts.png”Size= “Large”/>

    < Fluent:ButtonHeader= “圆形”Icon= “/Resources/circle.png”Size= “Large”/>

    </ Fluent:RibbonGroupBox>

    </ Fluent:RibbonTabItem>

    < Fluent:RibbonTabItemHeader= “设置”>

    </ Fluent:RibbonTabItem>

    运行一下:

    三、增加Button响应消息

    3.1、增加路由命令

    定义RoutedCommand用于响应Button的点击事件。MainWindow.xaml.cs

    publicpartialclassMainWindow

    {

    // 定义路由命令

    publicstaticreadonlyRoutedCommand ExecuteCommand = newRoutedCommand( “Rapid”, typeof(MainWindow));

    publicMainWindow( )

    {

    InitializeComponent;

    // 绑定响应函数

    CommandBindings.Add( newCommandBinding(ExecuteCommand, OnExecuteCommand));

    }

    privatevoidRibbonWindow_Loaded( objectsender, RoutedEventArgs e )

    {

    }

    // 处理点击命令

    privatevoidOnExecuteCommand( objectsender, ExecutedRoutedEventArgs e )

    {

    }

    }

    3.2、XAML里绑定Button绑定事件

  • Command: 绑定的命令

  • CommandParameter: 命令参数

  • MainWindow.xaml

    < Fluent:ButtonHeader= “直线”Icon= “/Resources/line.png”Size= “Large”Command= “{x:Static local:MainWindow.ExecuteCommand}”CommandParameter= “line”/>

    < Fluent:ButtonHeader= “圆弧”Icon= “/Resources/arc3pts.png”Size= “Large”Command= “{x:Static local:MainWindow.ExecuteCommand}”CommandParameter= “arc”/>

    < Fluent:ButtonHeader= “圆形”Icon= “/Resources/circle.png”Size= “Large”Command= “{x:Static local:MainWindow.ExecuteCommand}”CommandParameter= “circle”/>

    3.3、命令处理函数// 处理点击命令

    privatevoidOnExecuteCommand( objectsender, ExecutedRoutedEventArgs e )

    {

    switch(e.Parameter.ToString)

    {

    case“line”:

    {

    varshape = SketchBuilder.MakeLine( newGPnt( 0, 0, 0), newGPnt( 10, 10, 0));

    mView3d.ShowShape(shape, ColorTable.AliceBlue);

    }

    break;

    case“arc”:

    {

    varshape = SketchBuilder.MakeArcOfCircle( newGPnt( 0, 0, 0), newGPnt( 10, 10, 0), newGPnt( 5, 15, 0));

    mView3d.ShowShape(shape, ColorTable.AliceBlue);

    }

    break;

    case“circle”:

    {

    varshape = SketchBuilder.MakeCircle( newGPnt( 0, 0, 0), 5, GP.DZ);

    mView3d.ShowShape(shape, ColorTable.AliceBlue);

    }

    break;

    }

    }

    运行一下,挨个Button点一遍:

    四、综合建模爱心巧克力

    一种实现方法:

  • 由线生成爱心平面轮廓

  • 轮廓填充成面

  • 面拉伸成体

  • 对体倒角

  • {

    vararc1 = SketchBuilder.MakeArcOfCircle( newGPnt( 0, 2, 0), newGPnt( 10, 0, 0), newGPnt( 5, 5, 0));

    vararc2 = SketchBuilder.MakeArcOfCircle( newGPnt( 0, 2, 0), newGPnt( -10, 0, 0), newGPnt( -5, 5, 0));

    varbottomPt = newGPnt( 0, -12, 0);

    varline1 = SketchBuilder.MakeLine( newGPnt( -10, 0, 0), bottomPt);

    varline2 = SketchBuilder.MakeLine(bottomPt, newGPnt( 10, 0, 0));

    varshapeList = newTopoShapeList;

    shapeList.Add(arc1);

    shapeList.Add(arc2);

    shapeList.Add(line1);

    shapeList.Add(line2);

    varwire = SketchBuilder.MakeWire(shapeList);

    varface = SketchBuilder.MakePlanarFace(wire);

    varshape = FeatureTool.Extrude(face, 5, GP.DZ);

    shape = FeatureTool.Fillet(shape, 1);

    mView3d.ShowShape(shape, ColorTable.PaleVioletRed);

    }

    五、总结

    varmesh = FontManager.Instance.CreateMesh( “情人节快乐!”);

    varmaterial = MeshPhongMaterial.Create( “love-material”);

    material.SetColor(ColorTable.OrangeRed);

    varshape = newPrimitiveSceneNode(mesh, material);

    mView3d.ShowSceneNode(shape);

    – EOF –

    点击标题可跳转

    C# 实现抢红包算法

    .NET 分库分表高性能:瀑布流分页

    .NET Core 程序瘦身器发布,压缩程序尺寸到1/3

    推荐关注「DotNet」,提升.Net技能

    点赞和在看就是最大的支持??

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年2月11日
    下一篇 2022年2月11日

    相关推荐