【问题标题】:how to get a boundingbox for multiple items in wpf?如何在wpf中获取多个项目的边界框?
【发布时间】:2011-09-01 05:22:09
【问题描述】:

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

【问题讨论】:

    标签: c# wpf vb.net silverlight transform


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-11
          • 1970-01-01
          • 2021-04-22
          相关资源
          最近更新 更多