0

如何计算 WPF 中缩放变换应用控件的增加的宽度和高度?

4

2 回答 2

3
public static Rect GetAbsolutePlacement(this FrameworkElement visual)
{
    Point topLeft = visual.PointToScreen(new Point(0, 0));
    var bottomRight = visual.PointToScreen(new Point(visual.ActualWidth, visual.ActualHeight));

    var bounds = Rect.Empty;
    bounds.Union(topLeft);
    bounds.Union(bottomRight);

    return bounds;
}
于 2014-07-14T14:57:28.563 回答
1

您可以使用ActualHeightActualWidth属性。这些返回控件的真实值,而不是您请求的值。虽然这是呈现控件后的值。

如果您想知道高度和宽度是多少,那么您可以转换应用于请求大小,但这些可能与实际值不匹配。

MSDN有更多信息。

Height 和 Width 与 ActualHeight 和 ActualWidth 的属性是有区别的。例如,ActualHeight 属性是基于其他高度输入和布局系统的计算值。该值由布局系统本身根据实际渲染过程设置,因此可能会稍微落后于作为输入更改基础的属性(例如高度)的设置值。

由于 ActualHeight 是一个计算值,因此您应该知道,由于布局系统的各种操作,可能会对其进行多次或增量报告更改。布局系统可能正在计算子元素所需的度量空间、父元素的约束等。

于 2011-09-08T09:29:04.317 回答