In case we use WPF (Silverlight) Viewbox
with Stretch=\"UniformToFill\"
or Stretch=\"Uniform\"
when it preserves content\'s native asp
See this question: Get the size (after it has been "streched") of an item in a ViewBox
Basically, if you have a Viewbox
called viewbox, you can get the ScaleTransform
like this
ContainerVisual child = VisualTreeHelper.GetChild(viewbox, 0) as ContainerVisual;
ScaleTransform scale = child.Transform as ScaleTransform;
You could also make an extension method for Viewbox
which you can call like this
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;
}
}