有一些几何数据和变换如何将变换应用于几何以获得一个新的几何与它的数据转换?
例如:我有一个Path对象将Path.Data设置为PathGeometry对象,我想使用变换将PathGeometry对象的点转换为适当的位置,而不是将变换应用于将在渲染时使用的PathGeometry .
PS我知道Transform类有一个方法Point Transform.Transform(Point p)
可以用来转换Point但是......有没有办法一次转换任意几何?
编辑:查看我目前找到的解决方案的 repply
我找到了一个解决方案,可以将任意转换应用于路径几何,这要归功于Todd White的回答:
基本上Geometry.Combine用于使用Union将所需几何与Geometry.Empty组合,并给出所需的变换.使用给定的变换转换生成的几何.
PathGeometry geometryTransformed = Geometry.Combine(Geometry.Empty, geometry, GeometryCombineMode.Union, transform);
您可以尝试使用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);
这就是我发现你可以做的,以获得所有图形信息完整的变换几何:
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);