WPF(Silverlight)を使用する場合Viewbox
、Stretch="UniformToFill"
またはStretch="Uniform"
コンテンツのネイティブアスペクト比を保持する場合、コンテンツに適用されている現在のスケーリング係数をどのように知ることができますか?
注:コンテンツの正確な初期サイズが常にわかっているわけではありません(たとえば、多くのものが含まれているグリッドです)。
WPF(Silverlight)を使用する場合Viewbox
、Stretch="UniformToFill"
またはStretch="Uniform"
コンテンツのネイティブアスペクト比を保持する場合、コンテンツに適用されている現在のスケーリング係数をどのように知ることができますか?
注:コンテンツの正確な初期サイズが常にわかっているわけではありません(たとえば、多くのものが含まれているグリッドです)。
この質問を参照してください: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;
}
}