裁剪任意wpf几何体

Isa*_*avo 5 wpf maps geometry vector-graphics

我的问题的背景是我有一堆几何(大量的,想想在更大的区域上的地图)分割成多个wpf几何实例(最初它们是PathGeometry,但为了减少内存使用,我预先处理它们并在创建StreamGeometries期间加载).现在我想做的是从这些几何体生成切片.

基本上我想采取一个更大的几何对象并"切出"它的矩形(我的瓷砖),所以我得到几个较小的几何形状.类似下图:

切片大几何

请注意,我希望结果是一个新的几何体,而不是渲染.我知道我可以通过将剪辑应用于UIElement将剪辑推送到绘图视图来实现视觉效果.

我已经尝试使用Geometry.Combine,其中一个参数是剪辑矩形,但我不能让它做我想要的(我通常只得到剪辑矩形后面,或一个空几何,取决于哪个组合模式我用).

或者,如果使用WPF无法完成此操作,是否还有其他(第三方可以).NET的通用purporse几何API可以执行这些操作?或者这可以使用WPF几何API的其他部分实现?

Dav*_*ead 1

代码显示右下角的矩形,就像“较小的图块”可视化中一样:

var geometry = MyOriginalPath.Data.Clone();
var bounds = geometry.Bounds;    
var rectangleGeometry = new RectangleGeometry(bounds);
var halfWidth = bounds.Width * 0.5;
var halfHeight = bounds.Height * 0.5;
var bottomQuarter = new RectangleGeometry(
  new Rect(bounds.X + halfWidth, bounds.Y + halfHeight, 
           halfWidth, halfHeight));
var combinedGeometry = new CombinedGeometry(GeometryCombineMode.Exclude,
                                           rectangleGeometry, bottomQuarter);
combinedGeometry = new CombinedGeometry(GeometryCombineMode.Exclude,
                                        geometry, combinedGeometry);
MyBottomQuarterPath.Data = combinedGeometry;
Run Code Online (Sandbox Code Playgroud)

问候戴夫