当前位置:  开发笔记 > 编程语言 > 正文

WPF:如何将GeneralTransform应用于Geometry数据并返回新的几何?

如何解决《WPF:如何将GeneralTransform应用于Geometry数据并返回新的几何?》经验,为你挑选了3个好方法。

有一些几何数据和变换如何将变换应用于几何以获得一个新的几何与它的数据转换?

例如:我有一个Path对象将Path.Data设置为PathGeometry对象,我想使用变换将PathGeometry对象的点转换适当的位置,而不是将变换应用于将在渲染时使用的PathGeometry .

PS我知道Transform类有一个方法Point Transform.Transform(Point p)可以用来转换Point但是......有没有办法一次转换任意几何?

编辑:查看我目前找到的解决方案的 repply



1> Pop Catalin..:

我找到了一个解决方案,可以将任意转换应用于路径几何,这要归功于Todd White的回答:

基本上Geometry.Combine用于使用Union将所需几何与Geometry.Empty组合,并给出所需的变换.使用给定的变换转换生成的几何.

PathGeometry geometryTransformed = Geometry.Combine(Geometry.Empty, geometry, GeometryCombineMode.Union, transform);



2> Todd White..:

您可以尝试使用Geometry.Combine.它在组合期间应用变换.一个问题是,只有你的Geometry有区域时,Combine才有效,所以单行不起作用.

这是一个适合我的样本.

PathGeometry geometry = new PathGeometry();
geometry.Figures.Add(new PathFigure(new Point(10, 10), new PathSegment[] { new LineSegment(new Point(10, 20), true), new LineSegment(new Point(20, 20), true) }, true));
ScaleTransform transform = new ScaleTransform(2, 2);
PathGeometry geometryTransformed = Geometry.Combine(geometry, geometry, GeometryCombineMode.Intersect, transform);



3> Curtis..:

这就是我发现你可以做的,以获得所有图形信息完整的变换几何:

var geometry = new PathGeometry();
geometry.Figures.Add(new PathFigure(new Point(10, 10), new PathSegment[] { new LineSegment(new Point(10, 20), true), new LineSegment(new Point(20, 20), true) }, true));
geometry.Transform = new ScaleTransform(2, 2);

var transformedGeometry = new PathGeometry ();
// this copies the transformed figures one by one into the new geometry
transformedGeometry.AddGeometry (geometry); 

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有