当前位置: 首页 > 编程语言 > C#

WPF和3D如何改变3D空间中的单个点?分享

时间:2023-04-11 00:59:27 C#

WPF与3D如何改变3D空间中的单个位置点?我在WPF中定义了一个非常简单的3D空间,它定义了一个3D矩形,我希望能够操作MeshGeometry3D上每个Point3D对象(在“位置”中)的属性,但我遇到了麻烦。..这是我的XAML:其中test1只是一个包裹在视觉画笔中的图像。这是我的C#:privatevoidcanvas_ContactDown(objectsender,ContactEventArgse){//PointcontactPosition=e.GetPosition(this);//varrayMeshResult=(RayMeshGeometry3DHitTestResult)VisualTreeHelper.HitTest(ViewPort,e.GetPosition(ViewPort));translatedX-=0.25;translatedY-=0.25;model1.Transform=newTranslateTransform3D(translatedX,translatedY,0.0);//model1.Transform.Transform(newPoint3D(translatedX,translatedY,0.0));Console.WriteLine("已更改");//在此处应用Z索引更改...vargeometry3D=model1.GeometryasMeshGeometry3D;Point3DCollectionpositions=geometry3D.Positions;foreach(varpositioninpositions){position.Offset(0,0,-15);但是在可视屏幕上没有任何反应......我想特别提到的一件事是我不想将转换应用于整个对象,一次只是一个点。但是,如果这是唯一的方法,那么我想我应该研究一下。感谢您提供的所有帮助。标记好的,我明白了,这是因为geometry3D.Positions返回了Point3D对象的集合,这些对象是结构,所以当你引用它们时,你不会改变你认为正在改变的那个......所以更像这样的A循环将执行:for(vari=0;i这将以更好的方式解决问题。以上是C#学习教程:WPF和3D如何改变3D空间中的单个位置点?如果分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注---TranslateTransform3Dmytranslate=newTranslateTransform3D();mytranslate.OffsetX=0;mytranslate.OffsetY=0;我的翻译。偏移量Z=5;model1.Transform=mytranslate;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: