2011-12-21 3 views
1

배경에 맞게 크기를 조정할 수있는 캔버스가 있습니다.캔버스 크기를 배경의 이미지 크기에 바인딩 ImageBrush

여기서 하나의 장애물은 컨트롤이 인스턴스화 된 다음 이미지가 전달되어 ImageBrush로 할당된다는 것입니다. 다른 장애물은 WPF와 Silverlight 모두에 대해이 컨트롤을 만들고 ImageBrush가 다르다는 것입니다 (즉 이벤트를 공유하지 않음).

편집 :

<UserControl x:Class="Escalon.Annotations.AnnotationControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Height="400" Width="500" > 
    <ScrollViewer Name="ctlScrollViewer" HorizontalScrollBarVisibility="Auto" Height="400" Width="500"> 
     <Canvas Name="ctlSizingCanvas" > 
      <Canvas Name="ctlCanvas" Loaded="ctlCanvas_Loaded" Height="400" Width="500" 
       MouseLeftButtonDown="MouseLeftButtonDownHandler" MouseMove="Canvas_MouseMove" MouseLeftButtonUp="Canvas_MouseLeftButtonUp" > 
       <Canvas.RenderTransform> 
        <ScaleTransform x:Name="ctlZoomTransform" /> 
       </Canvas.RenderTransform> 
       <Canvas.Background> 
        <ImageBrush ImageSource="{Binding Source}" Stretch="UniformToFill" ></ImageBrush> 
       </Canvas.Background> 
      </Canvas> 
     </Canvas> 
    </ScrollViewer> 
</UserControl> 

문제는 내가 높이와 너비가없는 ImageBrush와 컨트롤을 사용하고, Image 컨트롤을 사용하지 않는 것이다.

+0

XAML을 표시 할 수 있습니까? Canvas의'Height' /'Width'를 이미지의'ActualHeight' /'ActualWidth'에 바인딩 할 수 있습니다. – Rachel

+0

안녕하세요, Grid 대신 Canvas를 사용해야하는 특별한 이유가 있습니까? 전자는 이미지의 크기에 따라 크기가 조정됩니다. –

+0

이 컨트롤을 사용하여 마우스로 다른 컨트롤을 그립니다. – PhilBrown

답변

0

ImageBrush를 사용하는 대신 이미지를 캔버스에 추가하고 Canvas 크기를 이미지 크기에 바인딩했습니다.