微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获得应用的WPF Viewbox缩放系数

如果我们在保留内容的原始宽高比时使用带有Stretch =“UniformToFill”或Stretch =“Uniform”的 WPF(Silverlight)ViewBox,我们怎样才能知道应用于内容的当前缩放系数?

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

解决方法

看到这个问题: Get the size (after it has been “streched”) of an item in a ViewBox

基本上,如果你有一个名为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;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐