C#/ WPF中相邻形状的联合

时间:2010-12-05 15:49:56

标签: c# wpf geometry

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

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

但是,我遇到两个形状相邻但不重叠的问题(两者之间的间距为0px)。由于它们不重叠,因此CombinedGeometry不会加入它们。

我考虑过将每个输入形状放大1个像素,然后用相同的方式收缩输出,但这不能使用ScaleTransform准确地完成。

如何将这两种形状结合在一起?

1 个答案:

答案 0 :(得分:2)

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

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

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

一旦你做完了,你就会得到一个带有孔的矩形,这是你所有形状的有效结合。

然后用另一个与第一个相同的矩形做一个“Xor”。

我认为这应该产生你的“联盟”。