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

将路径转换为几何形状分享

时间:2023-04-10 14:39:54 C#

C#学习教程:将路径转换为几何形状在一起,我想根据这些图形创建新元素,以便我可以为用户定义的元素创建新路径。假设我有一个正方形和一个三角形。用户将它与房子结合起来。现在我希望房子成为用户的一个元素。为此,我需要元素的路径,如何创建它?我的想法使用的图形元素基于路径字符串。因此,我想将这些转换成我以后可以使用的几何元素。我在下面的答案中使用了AndréMeneses提供的代码,代码转载于此:publicstaticGeometryPathMarkupToGeometry(ShieldGearViewModelshieldGearModelRec){尝试{stringxaml=""+""+pathMarkup+"";varpath=System.Windows.Markup.XamlReader.Load(xaml)asSystem.Windows.Shapes.Path;//从Path中分离PathGeometryif(path!=null){path.Height=shieldGearModelRec.Gear.高度;path.Width=shieldGearModelRec.Gear.Width;path.Fill=newSolidColorBrush(Colors.Green);path.Stretch=Stretch.Fill;几何geometry=path.Data;//测试不工作,抛出异常//RecttransRect=newRect(shieldGearModelRec.Gear.x,shieldGearModelRec.Gear.y,shieldGearModelRec.Gear.Width,shieldGearModelRec.Gear.Height);//geometry.Transform.TransformBounds(transRect);路径。数据=空;返回几何;}返回空值;}catch(Exceptionex){Debug.WriteLine(ex);}返回空值;我这样做是为了让Geometry遵循此链接中描述的示例。上面的问题是我无法访问新几何体的x或y位置,那么我该如何指定呢?对于这篇文章,我认为这个链接可能是一个解决方案,但还没有让它起作用??完成后,我根据之前的链接将它添加到几何组中,这样我就可以获得新元素的路径。但是几何组的边界是0。所以为了实现这个我需要为各个几何元素定义x和y,那么也许这将解决几何问题,或者我必须在阅读后看看这个:)这个问题已经存在太久了:下面的文字是老问题和想法我有一个字符串,我想在后面的代码中将其转换为几何图形。所以我在StackoverflowWPFC#路径上找到了这个:HowtogetfromPathDatainCodetoStringinGeometry(notinXAML)这个链接表明可以使用以下代码使用解析将字符串转换为路径:varpath=新路径();path.Data=Geometry.Parse("M100,200C100,25400,350400,175H280");但是在WindowsPhone上没有解析。我的其他努力没有解决这个问题。我尝试使用pathGeometry但似乎无法将字符串设置为路径?所以我的问题是如何在未绑定到视图元素的代码中将字符串转换为几何图形。第一步,所以我成功地创建了一个具有以下内容的路径varpathTesting=newSystem.Windows.Shapes.Path();varb=newSystem.Windows.Data.Binding{Source=DecorationOnShield[i].Gear.Path};System.Windows.Data.BindingOperations.SetBinding(pathTesting,System.Windows.Shapes.Path.DataProperty,b);现在我正在尝试将路径转换为几何图形。额外我的想法是按照此链接中的描述进行操作。示例显示:varblackRectGeometry=newRectangleGeometry();Rectrct=newRect();rct.X=80;rct.Y=167;rct.Width=150;rct.Height=30;blackRectGeometry.Rect=rct;我想使用任意形状的路径形式而不是矩形,但仍然能够设置坐标和大小等信息。额外的我正在考虑定义一个包含路径的用户控件:但不能以任何方式使用它来处理几何。有人对这种方法有想法吗?任何方法表示赞赏!?Extraextra:)是否可以用uielements创建几何形状,以便渲染的用户控件可以转换为几何路径?进展我找到了这个链接,我可以从路径创建几何体。路径具有宽度和高度属性。但是我在Geometry或Path中没有的属性如下:Canvas.LeftCanvas.TopCanvas.ZIndex(当我将它添加到GeometryGroup时我认为这是可能的)看起来这可以通过的bounds属性来完成路径.数据完成。但不是ZIndex。所以这个还是需要用一个geometryGroup来测试,Geometry需要添加到GeometryGroup中。前段时间,在为此寻找解决方案时,我最终创建了这个函数。也许它会对你有所帮助。publicstaticGeometryPathMarkupToGeometry(stringpathMarkup){try{stringxaml=""+""+pathMarkup+"";varpath=XamlReader.Load(xaml)作为路径;//从Path中分离PathGeometryif(path!=null){Geometrygeometry=path.Data;路径。数据=空;返回几何;}返回空值;}catch(Exceptionex){Debug.WriteLine(ex);}返回空值;}然后我这样调用这个函数:vararrow=newPath{Data=DesignHelpers.PathMarkupToGeometry("M-1,0L0,1L1,0"),Fill=newSolidColorBrush(Colors.Black),Stretch=Stretch。填充,高度=12,宽度=18,Horizo??ntalAlignment=Horizo??ntalAlignment.Center};我不知道这是否正是您想要的,但也许它可以提供帮助。WindowsPhone平台确实缺少Geometry.Parse(据我所知,它的后端StreamGeometry),但根据此页面:http://msdn.microsoft.com/en-us/library/ms752293(v=vs.110)在.aspx中WPF提供了两个提供用于描述几何路径的微型语言的类:StreamGeometry和PathFigureCollection。PathFigureCollection可用于WindowsPhone,所以这看起来像是要检查的地方:http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.windows.media.pathfigure(v=vs.105).aspx现在您只需要能够从XAML样式的标记创建PathGeometry。看起来这里有一些用于从XAML语法生成路径的示例:ConvertingXAMLPathGeometrytoWPFPathGeometryWindowsPhone7:HowtoparseBezierPathstringsinXAML?基本上,以上就是C#学习教程:将路径转换为几何形状。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——stringdata="M100,200C100,25400,350400,175H280";路径path=XamlReader.Load("")作为路径;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: