我在C#中使用CombinedGeometry
将多个多边形连接在一起。
获取每个形状的RenderedGeometry
,并使用GeometryCombineMode.Union
连接到最终形状。
但是,我遇到两个形状相邻但不重叠的问题(两者之间的间距为0px)。由于它们不重叠,因此CombinedGeometry
不会加入它们。
我考虑过将每个输入形状放大1个像素,然后用相同的方式收缩输出,但这不能使用ScaleTransform
准确地完成。
如何将这两种形状结合在一起?
答案 0 :(得分:2)
尝试以下方法 - 我没有测试过,但从逻辑上讲,我认为它会起作用:
创建一个包围形状的矩形 - 计算组合边界框并稍微扩展一下以应对舍入误差。
然后依次在矩形和每个形状之间执行“排除”。
一旦你做完了,你就会得到一个带有孔的矩形,这是你所有形状的有效结合。
然后用另一个与第一个相同的矩形做一个“Xor”。
我认为这应该产生你的“联盟”。