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

ActualHeightプロパティとプロパティを使用できActualWidthます。これらは、要求した値ではなく、コントロールの真の値を返します。これはコントロールがレンダリングされた後の値ですが。

高さと幅がどうなるか知りたい場合は、変換をリクエスト サイズに適用できますが、これらは実際の値と一致しない可能性があります。

MSDNに詳細があります。

Height と Width のプロパティと、ActualHeight と ActualWidth のプロパティには違いがあります。たとえば、ActualHeight プロパティは、他の高さの入力とレイアウト システムに基づいて計算された値です。この値は、実際のレンダリング パスに基づいてレイアウト システム自体によって設定されるため、入力変更の基になる Height などのプロパティの設定値よりもわずかに遅れる場合があります。

ActualHeight は計算された値であるため、レイアウト システムによるさまざまな操作の結果として、複数または増分の変更が報告される可能性があることに注意してください。レイアウト システムは、子要素に必要な計測スペース、親要素による制約などを計算している場合があります。

于 2011-09-08T09:29:04.317 に答える