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

时间:2011-05-24 19:20:37

标签: c# wpf vb.net silverlight transform

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

3 个答案:

答案 0 :(得分:1)

你可以得到每个项目的边界框,计算它的四个极值点,然后在它们上应用变换(倾斜,旋转......)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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