Viewbox
如果我们使用WPF (Silverlight)Stretch="UniformToFill"
或Stretch="Uniform"
当它保留内容的本机纵横比时,我们如何知道应用于内容的当前缩放系数?
注意:我们并不总是知道内容的确切初始尺寸(例如,它是一个包含很多东西的网格)。
Viewbox
如果我们使用WPF (Silverlight)Stretch="UniformToFill"
或Stretch="Uniform"
当它保留内容的本机纵横比时,我们如何知道应用于内容的当前缩放系数?
注意:我们并不总是知道内容的确切初始尺寸(例如,它是一个包含很多东西的网格)。
看到这个问题:Get the size (after it has been "stretched") in a ViewBox
基本上,如果你有一个Viewbox
叫做 viewbox,你可以得到ScaleTransform
这样的
ContainerVisual child = VisualTreeHelper.GetChild(viewbox, 0) as ContainerVisual;
ScaleTransform scale = child.Transform as ScaleTransform;
您还可以创建一个扩展方法Viewbox
,您可以像这样调用它
viewbox.GetScaleFactor();
视图框扩展
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;
}
}