10

Viewbox如果我们使用WPF (Silverlight)Stretch="UniformToFill"Stretch="Uniform"当它保留内容的本机纵横比时,我们如何知道应用于内容的当前缩放系数?

注意:我们并不总是知道内容的确切初始尺寸(例如,它是一个包含很多东西的网格)。

4

1 回答 1

18

看到这个问题: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;
    }
}
于 2011-03-24T19:32:12.613 回答