2012-11-06 5 views
4

Canvas 컨트롤에서 배경으로 설정된 이미지의 "크기보기"를 얻는 방법을 알아 내려고하고 있습니다. 배경은 ImageBrush으로 설정되고 strech는 UniForm으로 설정됩니다.
strech 속성을 Fill로 설정하면 캔버스의 ActualWidth 및 ActualHeight를 사용할 수 있습니다.

이것은 UniForm에서는 불가능하므로 어떻게 접근해야합니까? 상자 밖으로 ImageBrush와의 실제 크기를 얻을 수있는 방법은 없습니다캔버스 배경에 대한 이미지 브러쉬 컨트롤의 실제 크기 가져 오기

<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

만약 당신에게 도움이된다면 플레 징을 응답으로 간주하십시오. – Sisyphe

답변

1

:

여기 내 XAML입니다. 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; 
관련 문제