在Winforms中显示彩色3D框的最简单方法

时间:2019-05-10 09:10:51

标签: c# winforms opengl 3d

对于一个项目,我想在winform应用程序中显示一个带有框的3D场景。我想为每个框设置长/宽/高x / y / z坐标和颜色。尽管用户应该能够用鼠标旋转场景,但我希望它尽可能简单。

我一直在进行大量的谷歌搜索,但是我发现的所有解决方案都比我认为的复杂得多。每个示例都使您自己​​绘制每个点和每个顶点。

最接近简单解决方案的是带有SceneControl的SharpGL库。您可以在其中输入简单的代码:

var cube = new Cube();
cube.Transformation.ScaleX = 0.3f;
cube.Transformation.ScaleY = 0.2f;
cube.Transformation.ScaleZ = 0.4f;
cube.Transformation.TranslateX = 1f;
cube.Transformation.TranslateX = 2f;
cube.Transformation.TranslateX = 3f;
sceneControl1.Scene.SceneContainer.AddChild(cube);

但是我无法找到如何添加颜色和用户控件。我几乎找不到该库的文档。

应该没有一个真正简单的库,您可以在其中编写如下代码:

Scene.AddBox(length, width, height, x, y, z, Rx, Ry, Rx, color)

还是我错过了什么?我希望有人能指出我正确的方向。

3 个答案:

答案 0 :(得分:1)

您应该使用WPF / C#并获取AB4D库或Helix Toolkit。

AB4D需要花钱,但是这样做非常容易。我使用过AB4D,但未使用Helix工具包。

在以下位置查看Powertoys:https://www.ab4d.com/powertoys.aspx

答案 1 :(得分:0)

忘记使用Windows窗体,它是为接口而不是3D渲染而设计的,它仍然做得很差。

答案 2 :(得分:0)

用winforms运行OpenGL渲染立方体对我来说似乎很困难,但是有可能。

我建议您使用opengl的网络版本。 WebGL。

您将需要一个浏览器。问题是winforms内置了一个错误的Web浏览器。因此,您将需要一个更现代的浏览器。

您有几种选择: 边缘(EdgeHTML) 铬(铬) Firefox(壁虎)

我在winform中对所有这些都有经验。它们都有优点和缺点。

我们将使用Edge,因为该浏览器是Windows 10内置的,您可以使用Windows Community Toolkit将其直接嵌入到WinForms应用程序中。

请在您的项目上安装WinForms NuGet的Windows社区工具包。

现在刷新您的工具箱,然后将WebView控件拖到想要多维数据集的任何位置。

(取决于您的设计尺寸...)

下一步是编写一些代码。

您必须编写一些JavaScript和HTML才能在屏幕上显示多维数据集。

这是我在网上找到的一个示例: https://codepen.io/dbrandt/pen/mEbqZz

正确设置HTML后,请执行以下操作:

webView.NavigateToString(yourHtmlAsString);

您在Winforms上使用opengl获得了3d立方体渲染!