C#/WPF中相邻形状的并集
我用C#中的C#/WPF中相邻形状的并集,c#,wpf,geometry,C#,Wpf,Geometry,我用C#中的组合几何法将几个多边形连接在一起 每个形状的渲染几何体,并使用GeometryCombineMode.Union连接到最终形状 但是,我有一个问题,两个形状相邻,但不重叠(两个之间的间隙为0px)。由于它们不重叠,因此它们不会被组合几何测量法连接起来 我曾考虑过将每个输入形状放大1个像素,然后将输出缩小1个像素,但使用ScaleTransform无法准确地做到这一点 如何将这两个形状连接在一起?尝试以下方法-我还没有测试过它,但从逻辑上讲,我认为它会起作用: 创建一个包围形状的矩形-
组合几何法将几个多边形连接在一起
每个形状的渲染几何体
,并使用GeometryCombineMode.Union
连接到最终形状
但是,我有一个问题,两个形状相邻,但不重叠(两个之间的间隙为0px)。由于它们不重叠,因此它们不会被组合几何测量法连接起来
我曾考虑过将每个输入形状放大1个像素,然后将输出缩小1个像素,但使用ScaleTransform
无法准确地做到这一点
如何将这两个形状连接在一起?尝试以下方法-我还没有测试过它,但从逻辑上讲,我认为它会起作用:
创建一个包围形状的矩形-计算组合边界框,并稍微扩展它以处理舍入错误
然后依次在矩形和每个形状之间执行“排除”
一旦你做了,你会有一个矩形与一个洞削减了,这是所有形状的有效联合
然后用和第一个矩形大小相同的另一个矩形对此进行“异或”
我认为这应该会产生你的“联合”。我没有实现这一点,但我也看不出它不起作用的任何原因,所以我接受它作为答案。@dig412-你最终做了什么?我发现渲染几何体的精度为0.5-1px,这意味着我以前重叠的形状之间有一个微小的间隙。我刚刚用原始形状的宽度和高度为它们构建了一个新的几何体。