Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
裁剪任意wpf几何体_Wpf_Maps_Geometry_Vector Graphics - Fatal编程技术网

裁剪任意wpf几何体

裁剪任意wpf几何体,wpf,maps,geometry,vector-graphics,Wpf,Maps,Geometry,Vector Graphics,我的问题的背景是,我在多个wpf几何体实例(最初是PathGeometry,但为了减少内存使用,我对它们进行了预处理,并在加载过程中创建了StreamGeometry)中拆分了一组几何体(数量巨大,认为映射范围更大)。现在我想做的是从这些几何体生成瓷砖 基本上,我想拿一个较大的几何体对象,然后“剪切”出一个矩形(我的瓷砖),这样我就得到了几个较小的几何体。如下图所示: 请注意,我希望结果是新几何体,而不是渲染。我知道我可以通过应用or来实现视觉效果 我曾尝试使用其中一个参数作为剪辑矩形,但我无

我的问题的背景是,我在多个wpf几何体实例(最初是PathGeometry,但为了减少内存使用,我对它们进行了预处理,并在加载过程中创建了StreamGeometry)中拆分了一组几何体(数量巨大,认为映射范围更大)。现在我想做的是从这些几何体生成瓷砖

基本上,我想拿一个较大的几何体对象,然后“剪切”出一个矩形(我的瓷砖),这样我就得到了几个较小的几何体。如下图所示:

请注意,我希望结果是新几何体,而不是渲染。我知道我可以通过应用or来实现视觉效果

我曾尝试使用其中一个参数作为剪辑矩形,但我无法让它执行我想要的操作(我通常只返回剪辑矩形或空几何体,具体取决于我使用的组合模式)


或者,如果无法使用WPF执行此操作,是否有其他(第三方可以)通用的.NET几何体API可以执行此类操作?或者,也可以使用WPF geometry API的其他部分来实现这一点?

代码显示了右下角的矩形,如“较小的瓷砖”可视化:

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;

关于Dave

你是否使用GeometryCombineMode.Intersect with Geometry.Combine?我已经尝试了所有模式,但没有一种模式符合我的要求。这怎么不正是OP明确表示他们不想要的?即,
组合几何体
对象本身包含原始几何体的完整克隆。只需检索
combinedGeometry.Geometry1
属性的值即可看到这一点,该属性将是原始
geometry
对象。OP需要只存储可见元素的新几何体(即,不可能从新几何体恢复原始几何体)