如果我们使用WPF(Silverlight)Viewbox
与Stretch="UniformToFill"
或Stretch="Uniform"
保留内容的原始宽高比,我们怎样才能知道当前的缩放系数被应用于内容?
注意:我们并不总是知道内容的确切初始尺寸(例如,它是一个包含大量内容的网格)。
答案 0 :(得分:15)
请参阅此问题:Get the size (after it has been "streched") of an item in a ViewBox
基本上,如果您有一个名为Viewbox
的视图框,则可以像这样获得ScaleTransform
ContainerVisual child = VisualTreeHelper.GetChild(viewbox, 0) as ContainerVisual;
ScaleTransform scale = child.Transform as ScaleTransform;
您还可以为Viewbox
制作一个扩展方法,您可以像这样调用
viewbox.GetScaleFactor();
<强> ViewBoxExtensions 强>
public static class ViewBoxExtensions
{
public static double GetScaleFactor(this Viewbox viewbox)
{
if (viewbox.Child == null ||
(viewbox.Child is FrameworkElement) == false)
{
return double.NaN;
}
FrameworkElement child = viewbox.Child as FrameworkElement;
return viewbox.ActualWidth / child.ActualWidth;
}
}