8
如果一個WPF Viewbox控件係數我們使用WPF(Silverlight的)Viewbox
與Stretch="UniformToFill"
或者當它保留了內容的原始寬高比Stretch="Uniform"
,我們怎麼能拿知道它們應用到縮放的電流係數內容?如何獲得的縮放應用
注意:我們並不總是知道內容的確切初始尺寸(例如,它是一個包含大量內容的網格)。
如果一個WPF Viewbox控件係數我們使用WPF(Silverlight的)Viewbox
與Stretch="UniformToFill"
或者當它保留了內容的原始寬高比Stretch="Uniform"
,我們怎麼能拿知道它們應用到縮放的電流係數內容?如何獲得的縮放應用
注意:我們並不總是知道內容的確切初始尺寸(例如,它是一個包含大量內容的網格)。
看到這個問題:Get the size (after it has been "streched") of an item in a ViewBox
基本上,如果你有一個Viewbox
稱爲視框,你可以得到ScaleTransform
這樣
ContainerVisual child = VisualTreeHelper.GetChild(viewbox, 0) as ContainerVisual;
ScaleTransform scale = child.Transform as ScaleTransform;
你也可以做一個擴展方法Viewbox
,你可以調用像這樣
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;
}
}
太好了,謝謝! +1 – rem 2011-03-24 19:41:28
只需向其他Silverlight用戶快速提示一下即使該問題詢問「WPF(Silverlight)」ViewBox,該解決方案也無法像Silverlight那樣工作,因爲它沒有ContainerVisual類。 – dlanod 2011-07-04 23:06:24
謝謝。幫助我很多。 – Evgeny 2013-08-23 16:14:55