WPF .NET 4.5.1 を使用しています。キャンバスにいくつかの境界線を追加しました。コード ビハインドでは、RenderTransform を適用して、それらすべてを特定の量だけスケーリングします。
foreach (FrameworkElement child in OverlayCanvas.Children)
{
child.RenderTransform = new ScaleTransform(XScale, YScale, 0, child.Height/2);
}
他の場所では、Borders の ActualWidth と ActualHeight を使用しようとしましたが、XScale と YScale の値によってスケーリングされません。LayoutTransform も使用してみましたが、どちらも機能しませんでした。
ActualHeight と ActualWidth を使用するときはいつでもスケールを適用しなければならないことに我慢する必要がありますか? それとももっと簡単な方法がありますか?
アップデート:
FrameworkElement の拡張メソッド GetBounds() を使用する 1 つの方法を見つけました。
いつ .NET フレームワークに追加されたのかはわかりませんが、この状況では確かに役に立ちました。変換後に計算された、正確な高さと幅、および他のコントロールに対するコントロールの位置がわかりました。
誰か提案があれば、これを行うためのより良い方法を聞きたいです。