如何获得应用的WPF Viewbox缩放系数
如果我们将WPF(Silverlight)如何获得应用的WPF Viewbox缩放系数,wpf,silverlight,layout,viewbox,Wpf,Silverlight,Layout,Viewbox,如果我们将WPF(Silverlight)Viewbox与Stretch=“UniformToFill”或Stretch=“Uniform”一起使用,当它保留内容的本机纵横比时,我们如何知道应用于内容的当前缩放系数? 注意:我们并不总是知道内容的确切初始尺寸(例如,它是一个包含大量内容的网格)。请参见以下问题: 基本上,如果您有一个名为Viewbox的Viewbox,您可以像这样得到ScaleTransform ContainerVisual child = VisualTreeHelper.G
Viewbox
与Stretch=“UniformToFill”
或Stretch=“Uniform”
一起使用,当它保留内容的本机纵横比时,我们如何知道应用于内容的当前缩放系数?
注意:我们并不总是知道内容的确切初始尺寸(例如,它是一个包含大量内容的网格)。请参见以下问题:
基本上,如果您有一个名为Viewbox的Viewbox
,您可以像这样得到ScaleTransform
ContainerVisual child = VisualTreeHelper.GetChild(viewbox, 0) as ContainerVisual;
ScaleTransform scale = child.Transform as ScaleTransform;
viewbox.GetScaleFactor();
您还可以为Viewbox
创建一个扩展方法,您可以这样调用它
ContainerVisual child = VisualTreeHelper.GetChild(viewbox, 0) as ContainerVisual;
ScaleTransform scale = child.Transform as ScaleTransform;
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;
}
}
给其他Silverlight用户一个简短的提示-尽管问题是关于“WPF(Silverlight)”视图框的,但解决方案并没有像Silverlight那样工作,因为它没有ContainerServiceSual类。谢谢。这对我很有帮助。