Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#/WPF中相邻形状的并集_C#_Wpf_Geometry - Fatal编程技术网

C#/WPF中相邻形状的并集

C#/WPF中相邻形状的并集,c#,wpf,geometry,C#,Wpf,Geometry,我用C#中的组合几何法将几个多边形连接在一起 每个形状的渲染几何体,并使用GeometryCombineMode.Union连接到最终形状 但是,我有一个问题,两个形状相邻,但不重叠(两个之间的间隙为0px)。由于它们不重叠,因此它们不会被组合几何测量法连接起来 我曾考虑过将每个输入形状放大1个像素,然后将输出缩小1个像素,但使用ScaleTransform无法准确地做到这一点 如何将这两个形状连接在一起?尝试以下方法-我还没有测试过它,但从逻辑上讲,我认为它会起作用: 创建一个包围形状的矩形-

我用C#中的
组合几何法将几个多边形连接在一起

每个形状的
渲染几何体
,并使用
GeometryCombineMode.Union
连接到最终形状

但是,我有一个问题,两个形状相邻,但不重叠(两个之间的间隙为0px)。由于它们不重叠,因此它们不会被组合几何测量法连接起来

我曾考虑过将每个输入形状放大1个像素,然后将输出缩小1个像素,但使用
ScaleTransform
无法准确地做到这一点


如何将这两个形状连接在一起?

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

创建一个包围形状的矩形-计算组合边界框,并稍微扩展它以处理舍入错误

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

一旦你做了,你会有一个矩形与一个洞削减了,这是所有形状的有效联合

然后用和第一个矩形大小相同的另一个矩形对此进行“异或”


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

我没有实现这一点,但我也看不出它不起作用的任何原因,所以我接受它作为答案。@dig412-你最终做了什么?我发现渲染几何体的精度为0.5-1px,这意味着我以前重叠的形状之间有一个微小的间隙。我刚刚用原始形状的宽度和高度为它们构建了一个新的几何体。