c# - C#/WPF 中相邻形状的并集

标签 c# wpf geometry

我在 C# 中使用 CombinedGeometry 将多个多边形连接在一起。

获取每个形状的 RenderedGeometry,并使用 GeometryCombineMode.Union 连接到最终形状。

但是,我遇到了两个形状相邻但不重叠的问题(两者之间的间隙为 0px)。由于它们不重叠,它们不会被 CombinedGeometry 连接。

我考虑过将每个输入形状放大 1 个像素,然后将输出缩小 1 个像素,但这无法使用 ScaleTransform 准确完成。

如何将这两个形状连接在一起?

最佳答案

尝试以下方法 - 我没有测试过,但从逻辑上讲我认为它会起作用:

创建一个包含您的形状的矩形 - 计算组合的边界框并稍微扩展它以应对舍入误差。

然后依次在矩形和每个形状之间进行一次“排除”。

完成后,您将得到一个切出一个孔的矩形,它是所有形状的有效结合。

然后将 this 与另一个与第一个大小相同的矩形进行“异或”运算。

我认为这应该会产生您的“联合”。

关于c# - C#/WPF 中相邻形状的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359599/

相关文章:

c# - 如何取消选择DataGrid单元格?

c++ - 既是线框又是实体的 openGL 球体

wpf - 在 WPF 中的文本框中验证

c# - Xamarin IOS 隐藏栏后退按钮

c# - 如何将给定数组中的数字随机返回到标签中

c# - 将 foreach 循环转换为 linq

c# - ListView 中的 "Infinite Scrolling"/避免重入滚动事件

渲染 3D 表面

algorithm - 是否有一种有效的算法可以找到一组无限直线的所有交点?

c# - 如何释放和处置 Container 实例上的所有 Http 范围的对象?