2010-12-05 22 views
2

我在C#中使用CombinedGeometry将几个多边形连接在一起。C#中的相邻形状的联合/ WPF

取得各种形状的RenderedGeometry,并与GeometryCombineMode.Union连接成最终形状。

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

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

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

回答

2

请尝试以下 - 我没有测试它,但在逻辑上,我认为它会工作:

创建包围你的形状矩形 - 计算结合的边界框和扩展它有点应付舍入误差。

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

一旦你这样做了,你将会有一个带有洞的矩形,这就是所有形状的有效结合。

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

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

+0

我没有实现这一点,但我不明白为什么它不起作用,所以我会接受它作为答案。 – dig412 2010-12-07 23:05:04