我有两个巨大的PathGeometry(> 100000个项目)集合,我需要使用PathGeometry进行比较。
List<PathGeometry> firstList;
List<PathGeometry> secondList;
[...]
foreach (PathGeometry pg1 in firstList)
foreach (PathGeometry pg2 in secondList)
{
PathGeometry intergeo = PathGeometry.Combine(pg1, pg2, GeometryCombineMode.Intersect, null);
if (intergeo.GetArea() > 0)
{
// do whatever with intergeo.GetArea()
}
}
令我惊讶的是,PathGeometry是GUI的一部分,并且确实使用了分派(dispatch)器,这有时会导致问题,因为我的计算确实在某些后台线程中运行而没有使用Parallel.ForEach()的GUI
因此,我正在寻找不连接GUI的PathGeometry的替代方法。
我的图形非常复杂,并向PathGeometry.Figures添加了很多PathFigures。
我自己是从一些government肿的政府xml文件中创建这些PathGeometries的,因此创建其他内容并不是没有问题。但是我需要一个函数来创建这两个几何中的两个的交集(不将它们彼此添加),以获取两个几何均覆盖的区域,例如此图中的红色区域:
最佳答案
System.Windows.Media
还包含一个StreamGeometry
类,它是PathGeometry
的“轻量级替代”。它不支持数据绑定(bind),动画或修改,但由于它是从Geometry
派生的,因此应具有Combine
方法。
参见StreamGeometry @ MSDN
关于c# - 非GUI替代PathGeometry?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12579294/