gpt4 book ai didi

wpf - 裁剪任意 wpf 几何图形

转载 作者:行者123 更新时间:2023-12-03 01:32:20 25 4
gpt4 key购买 nike

我的问题的背景是,我有一堆几何图形(数量巨大,认为映射到更大的区域)分布在多个 wpf 几何实例中(最初它们是 PathGeometry,但为了减少内存使用量,我对它们进行了预处理并在加载期间创建 StreamGeometry)。现在我想做的是从这些几何图形生成图 block 。

基本上,我想采用一个更大的几何对象并“切出”它的一个矩形(我的图 block ),这样我就得到了几个较小的几何图形。如下图所示:

Slicing up a large geometry

请注意,我希望结果是新的几何图形,而不是渲染。我知道我可以通过应用 clip to a UIElement 来实现视觉结果或通过 pushing a clip to a drawingvisual .

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

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

最佳答案

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

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;

问候戴夫

关于wpf - 裁剪任意 wpf 几何图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19090202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com