gpt4 book ai didi

c# - 编辑 Nuget 包 C# Helixtoolkit.WPF

转载 作者:行者123 更新时间:2023-11-30 12:43:49 26 4
gpt4 key购买 nike

我在我的 C# 程序中使用 Helixtoolkit.WPF。我已经导入了 NuGet 包,它运行良好。但是,我想编辑其中一个文件,特别是 GridLinesVisual.cs。我想更改该文件中某个函数的运行方式,但似乎无法正常运行。

我需要更改的函数从第 247 行开始 protected override MeshGeometry3D Tessellate()

这是我需要更新/更改的文件的链接 https://searchcode.com/codesearch/view/10564811/

我程序的调用代码是 grid = new GridLinesVisual3D();

我对 C# 的熟悉不如对 C++ 的熟悉,但我知道我无法创建子类来编辑此函数。我认为覆盖是执行此操作的正确方法,但我无法使其正常工作。我创建了一个新文件 RectGrid.cs,这就是我在代码中的内容:

using HelixToolkit.Wpf;
using System.Windows;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Media.Media3D;

namespace Axcro.Helix_Toolkit_Extentions
{
class RectGrid : GridLinesVisual3D
{
protected override MeshGeometry3D Tessellate()
{
this.lengthDirection = this.LengthDirection;
this.lengthDirection.Normalize();
this.widthDirection = Vector3D.CrossProduct(this.Normal, this.lengthDirection);
this.widthDirection.Normalize();

var mesh = new MeshBuilder(true, false);
double minX = -this.Width / 2;
double minY = -this.Length / 2;
double maxX = this.Width / 2;
double maxY = this.Length / 2;

double x = minX;
double eps = this.MinorDistance / 10;
while (x <= maxX + eps)
{
double t = this.Thickness;
if (IsMultipleOf(x, this.MajorDistance))
{
t *= 2;
}

this.AddLineX(mesh, x, minY, maxY, t);
x += this.MinorDistance;
}

var m = mesh.ToMesh();
m.Freeze();
return m;
}
}
}

这段代码编译得很好,但我对 Tessellate 的更改没有显示出来。使用覆盖是修改 Tessellate 功能的正确方法还是有更好/更简单的编辑方法?

就其值(value)而言,Tessellate 函数正在 X 和 Y 方向上创建网格线。我只想要 Y 方向的网格线,而不是 X 方向。所以基本上我不需要网格,我只想要线......

最佳答案

您的更改仅适用于 RectGrid 类。您没有修改原始类的行为,这不是覆盖的工作方式。

您需要确保将 using Axcro.Helix_Toolkit_Extentions; 添加到实例化类的文件顶部。如果 RectGrid 类在使用它的不同 DLL 中。确保添加引用。

然后您将实例化 GridLinesVisual3D 的类实例

grid = new RectGrid();

关于c# - 编辑 Nuget 包 C# Helixtoolkit.WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30350774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com