我在 C# 中使用 CombinedGeometry
将多个多边形连接在一起。
获取每个形状的 RenderedGeometry
,并使用 GeometryCombineMode.Union
连接到最终形状。
但是,我遇到了两个形状相邻但不重叠的问题(两者之间的间隙为 0px)。由于它们不重叠,它们不会被 CombinedGeometry
连接。
我考虑过将每个输入形状放大 1 个像素,然后将输出缩小 1 个像素,但这无法使用 ScaleTransform
准确完成。
如何将这两个形状连接在一起?
最佳答案
尝试以下方法 - 我没有测试过,但从逻辑上讲我认为它会起作用:
创建一个包含您的形状的矩形 - 计算组合的边界框并稍微扩展它以应对舍入误差。
然后依次在矩形和每个形状之间进行一次“排除”。
完成后,您将得到一个切出一个孔的矩形,它是所有形状的有效结合。
然后将 this 与另一个与第一个大小相同的矩形进行“异或”运算。
我认为这应该会产生您的“联合”。
关于c# - C#/WPF 中相邻形状的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359599/