如何在wpf中获取多个项目的边界框?

我有几个项目,我想计算一个它们可以适合的最小矩形,但项目旋转到某种程度,或倾斜或两者。 那么我如何得到可以包含所有的最小矩形?

您可以为每个项目获取边界框,计算其四个极值点,然后对它们应用变换(倾斜,旋转,……)

然后,您可以通过计算所有这些点的最小值和最大值x和y来轻松计算边界框。

以下是动态canvas实现的链接。 此控件自动调整其大小以适合其内容,因此可以在此代码中找到问题的答案。 查看MeasureOverride函数。

在你想要的项目列表上做一个foreach。 在循环的每次迭代中,获取项目的Canvas位置(左上角)并添加ActualWidth / ActualHeight以获得右下角。 取左上角和右下角并调用Transform.Transform以获得ACTUAL左上角和右下角。

跟踪最小值和最大值左上角和右下角以获取边界框。