对于一个项目,我想在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)
还是我错过了什么?我希望有人能指出我正确的方向。
答案 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立方体渲染!