开发者

Union of adjacent shapes in C#/WPF

I'm using a CombinedGeometry in C# to join several polygons together.

The RenderedGeometry of each shape is taken, and joined to the final shape with GeometryCombineMode.Union.

开发者_运维技巧However, I'm having a problem where two shapes are adjacent, but not overlapping (a 0px gap between the two). As they do not overlap, they will not be joined by the CombinedGeometry.

I've considered enlarging each input shape by 1 pixel, then contracting the output by the same, but this can't be done accurately using a ScaleTransform.

How can I join these two shapes together?


Try the following - I've not tested it, but logically I think it will work:

Create a rectangle that encloses your shapes - calculate the combined bounding box and extend it a bit to cope with rounding error.

Then perform a "Exclude" between the rectangle and each shape in turn.

Once you've done that you'll have a rectangle with a hole cut out that's the effective union of all your shapes.

Then do an "Xor" of the this with another rectangle the same size as the first.

I think this should produce your "union".

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜