2012-11-06 51 views
4

我想弄清楚如何獲取設置爲Canvas控件背景的圖像的「視圖大小」。 背景設置爲ImageBrush,strech設置爲UniForm。
如果strech屬性設置爲Fill,那麼我可以使用畫布的ActualWidth和ActualHeight。

這對UniForm來說是不可能的,所以我該如何解決這個問題?獲取畫布背景的圖像刷控件的實際大小

這是我的XAML:

<Grid DataContext="{Binding ImageViewerVM.CurrentImage}"> 
    <controls:RubberBandingCanvas x:Name="RubCanvas"> 
     <controls:RubberBandingCanvas.Resources> 
      <Converters:ControlVisibilityConverter x:Key="VisibilityHiddenConverter" /> 
      <Converters:StringToBitmapConverter x:Key="StringToBitmapConverter" /> 
     </controls:RubberBandingCanvas.Resources> 
     <controls:RubberBandingCanvas.Background> 
      <ImageBrush x:Name="ibCurrentImage" ImageSource="{Binding Path=Path, Converter={StaticResource StringToBitmapConverter}}" Stretch="Uniform"></ImageBrush> 
     </controls:RubberBandingCanvas.Background> 
     <Ellipse Canvas.Top="10" Canvas.Right="10" Fill="Red" Stroke="Black" Height="15" Width="15" Visibility="{Binding Path=IsMultiTiff, Converter={StaticResource VisibilityHiddenConverter}}"/>    
    </controls:RubberBandingCanvas> 
</Grid> 


最好的問候,
加斯帕詹森

+0

如果這對你有效,請考慮fla擦。 – Sisyphe

回答

1

有沒有辦法讓圖像刷的實際大小開箱。我會做的是根據Canvas RenderSize手動計算這個大小。

var ratio = Math.Min(RubCanvas.RenderSize.Width/CanvasBackground.ImageSource.Width, RubCanvas.RenderSize.Height/CanvasBackground.ImageSource.Height); 
var imageBrushWidth = CanvasBackground.ImageSource.Width * ratio; 
var imageBrushHeight = CanvasBackground.ImageSource.Height * ratio;